Как запустить функцию jQuery в конце концов и любой другой javascript был запущен - PullRequest
7 голосов
/ 23 июня 2010

У меня есть страница фотогалереи, размещенная на CMS (Squarespace), в которой есть несколько собственных сценариев, которые загружают миниатюры асинхронно.

Реальные большие изображения, однако, не загружаются заранее, поэтому я решил добавить свойсвой собственный скрипт в миксе, чтобы браузер загружал эти большие изображения в кеш в фоновом режиме, например:

(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery)

$(window).load(function(){
$.preLoadImages(
    "/picture/1.jpg",
    "/picture/2.jpg", //etc.
   );
});

Я поместил свой код в $ (window) .load (), потому что этофоновый скрипт, и он не обязателен, он вообще запускается, он просто повышает производительность.

Однако я думаю, что этот скрипт каким-то образом блокирует собственный скрипт предварительной загрузки миниатюр CMS.

Прав ли я?И самое главное, есть ли способ диктовать, что мой сценарий запускается только после запуска всех других сценариев на странице?

cheers

Ответы [ 2 ]

2 голосов
/ 23 июня 2010

JavaScript всегда запущен, например, постоянно запускается событие hover, mousemove и т. Д. ... «завершению» выполнения скрипта нет.

Однако в вашем случае это не должно блокировать любую другую предварительную загрузку ... также вы можете использовать document.ready здесь, поскольку вам на самом деле не нужно загружать изображения перед выполнением кода.

Фактически, вы фактически замедляете страницу, используя вместо этого window.load ... поскольку предварительная загрузка начинается позже, когда браузер может распараллелить ее с другими загрузками ранее. Вместо этого используйте document.ready, например:

$(function(){
  $.preLoadImages(
    "/picture/1.jpg",
    "/picture/2.jpg", //etc.
   );
});
1 голос
/ 23 июня 2010

Скрипты загружаются сверху вниз, и загрузки тела обычно добавляются к существующим загрузкам - так что пока $ (function () .. находится в конце страницы, он будет выполняться последним. (Последний (как за комментарий ник), означающий начальный анализ / прогон документа)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...