如何运行一个jQuery函数和所有其他的JavaScript运行
我有一个托管在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自己的缩略图预加载脚本。
我对吗? 最重要的是,有没有一种方法可以指示我的脚本只在页面上的所有其他脚本运行后才运行?
干杯
JavaScript总是在运行,例如hover
事件不断发射, mousemove
等等......脚本运行没有“结束”。
但在你的情况下,这不应该阻止任何其他的预加载......你也可以在这里使用document.ready
,因为你实际上并不需要在你的代码执行之前加载图像。
实际上,实际上,您实际上是通过使用window.load
来减慢页面的速度,因为预加载会在稍后开始,此时可以与浏览器早期的其他下载并行化。 而是使用document.ready
,像这样:
$(function(){
$.preLoadImages(
"/picture/1.jpg",
"/picture/2.jpg", //etc.
);
});
脚本从上到下加载,而body加载通常会附加到现有的onload上,所以只要$(function()..在页面末尾,它就会最后运行(最后(根据nick的评论)表示文档的初始分析/运行)
链接地址: http://www.djcxy.com/p/1429.html上一篇: How to run a jQuery function after all and any other javascript has run
下一篇: How to mimic Picasa's rendering of reduced quality image to speed up drawing