Войти

Показать полную графическую версию : Реализация предварительной загрузки ролловеров с помощью JavaScript


Vit_Home
16-10-2006, 10:16
Купил в онлайне книгу, про ускорение работы сайта :) , переписал от туда скрипт, вставил в шапку линк на него,
в тег боди вставил вызов функции и... не пашет. :( Помогите пожалуйста, очень нужно. Заранее большое спасибо!

dcity.by.ru (http://dcity.by.ru/) Мой пример
Листинг функции для загрузки изображений (отдельный файл preload.js)

function preloadImages () {
args = preloadImages.arguments;
n = ags.length;
imgArray = new Array (n) ;
for (i=0; i<n; i++) {
document.imgArray[i] = new Image;
document.imgArray[i].src = args[i];
}
}
Тег для вызова функции загрузки изображений
<script type='text/javascript' src='preload.js'></script>
И сам вызов функции из тега боди
<BODY onLoad="preloadImages('images/rollover/Articles-Download_sel.gif', 'images/rollover/Articles-overDownloadsel.gif', 'images/rollover/Articles-overHomesel.gif', 'images/rollover/Articles-overProjectsel.gif', 'images/rollover/Articles-sel.gif', 'images/rollover/Download-over.gif', 'images/rollover/Download-overArticlessel.gif', 'images/rollover/Download-overHomesel.gif', 'images/rollover/Download-overProjectsel.gif', 'images/rollover/Download-sel.gif', 'images/rollover/Home-over.gif', 'images/rollover/Home-overArticlessel.gif', 'images/rollover/Home-overDownloadsel.gif', 'images/rollover/Home-overProjectsel.gif', 'images/rollover/Home-Project_sel.gif', 'images/rollover/Home-sel.gif', 'images/rollover/Project-Articles_sel.gif', 'images/rollover/Project-over.gif', 'images/rollover/Project-overArticlessel.gif', 'images/rollover/Project-overDownloadsel.gif', 'images/rollover/Project-overHomesel.gif', 'images/rollover/Project-sel.gif');">

mar
16-10-2006, 10:33
Vit_Home
у Вас в вызове половина кавычек не закрыта и ; после ) нет. (Последнее менее фтально). А вообще жуть - столько в body запихивать :)

Vit_Home
17-10-2006, 00:11
Спасибо за сообщение! Сейчас допишу вторую половину ковычек. Про жуть тоже подумаю.

Vit_Home
20-10-2006, 03:10
Может кто знает почему скрипт не пашет?

Ошибка: document.imgArray has no properties
Источник: preload.js (http://dcity.by.ru/preload.js)
Строка 6

function preloadImages() {
args = preloadImages.arguments;
n = args.length;
imgArrey = new Array(n);
for (i=0; i<n; i++) {
document.imgArray[i] = new Image;
document.imgArray[i].src = args[i];
}
}

Prisoner
20-10-2006, 11:16
Vit_Home, будьте внимательнее, у вас ошибка в "imgArrey = new Array(n);". Точнее опечатка.

Vit_Home
21-10-2006, 02:22
извиняюсь, в упор не вижу...
imgArrey = new Array(n);
и где здесь ошибка?

mar
21-10-2006, 02:32
Vit_Home
проверяйте по буковкам =)
imgArray = new Array(n);
тк
document.imgArray[i] = new Image;

Vit_Home
21-10-2006, 23:47
Исправил ошибки в скрипте!

function preloadImages() {
args = preloadImages.arguments;
n = args.length;
imgArray = new Array(n);
for (i=0; i<n; i++) {
document.imgArray[i] = new Image;
document.imgArray[i].src = args[i];
}
}

Но в браузере опять ошибка, не грузит он картинки в кэш!

Ошибка: document.imgArray has no properties
Источник: file:///D:/Temp/work/site/dcity.by.ru/preload.js
Строка: 6

vadimiron
22-10-2006, 00:52
А если без document , то есть просто imgArray[i] попробывать??
И какой браузер??

Prisoner
22-10-2006, 06:57
Vit_Home
Откуда Вы это все берете, если не секрет? Если из книги, ты срочно ее выбросьте, это плохая книга.

function preloadImages() {
var args = preloadImages.arguments;
var n = args.length;
var imgArray = new Array(n);
for (var i=0; i<n; i++) {
imgArray[i] = new Image();
imgArray[i].src = args[i];
}
}
1) var - обязательны, если Вы не хотите засорять контекст вызова функции: переменные без var становятся глобальными (грубо говоря добавляются в window).
2) () - тоже маленький нюанс.

Vit_Home
23-10-2006, 02:58
Prisoner
Нормальная книга!
Название: "Ускорение работы сайта", Автор: Влад Мержевич.
Книга про ускорение, т.е. про повышение скорости загрузки сайта,
а не про оптимизацию кода JavaScript.

Я её купил - выкидывать не собираюсь. Свои книги выкидывайте!

Vit_Home
23-10-2006, 03:38
Без document ошибка не появляется! :)

function preloadImages() {
var args = preloadImages.arguments;
var n = args.length;
var imgArray = new Array(n);
for (var i=0; i<n; i++) {
imgArray[i] = new Image();
imgArray[i].src = args[i];
}
}

Как проверить работу скрипта?

Перекинул обновлённый скрипт (preload.js) на сервер, зашёл (FireFox'ом v. 2.0b2 и Explorer'ом v. 6) на Dcity.by.ru (http://dcity.by.ru/)
и ни чего в фоне не качается! :(

Prisoner
23-10-2006, 18:14
Книга про ускорение, т.е. про повышение скорости загрузки сайта,
а не про оптимизацию кода JavaScript.
Какое уж тут ускорение, коли код просто ошибочен? Посему вывод, если код из книги, то книга - плохая. Не в оптимизации дело, а в некомпетентности.

Перекинул обновлённый скрипт (preload.js) на сервер, зашёл (FireFox'ом v. 2.0b2 и Explorer'ом v. 6) на Dcity.by.ru
и ни чего в фоне не качается!
Что значит в фоне? Указанные (зачем, кстати указываете в качестве параметров preloadImages() изображения уже фигурирующие в коде страницы? Они и так загрузились уже.) изображения начнут загружаться после загрузки кода всего документа. Но только в том случае, если они уже не в кеше броузера. В любом случае, заметить что-то на глаз будет трудно. Попробуйте почистить кеш, зайти наглавную страницу, дождаться прекращения активности броузером и, не наводя ни на одно ролеверное изображение, поглядеть логи обращений к серверу на стороне хостера. Если обращения к заменяемым при наведении картинкам имееют место быть, то скрипт работает, нет - работать следует Вам... над испровлениями.




© OSzone.net 2001-2012