在jQuery中执行此操作时:
$(function() {
alert("DOM is loaded, but images not necessarily all loaded");
});
Run Code Online (Sandbox Code Playgroud)
它等待DOM加载并执行您的代码.如果未加载所有图像,则它仍然执行代码.如果我们正在初始化任何DOM内容,例如显示或隐藏元素或附加事件,这显然是我们想要的.
让我们说虽然我想要一些动画但我不希望它运行直到所有图像都被加载.jQuery中是否有正式的方法来执行此操作?
我有最好的方法就是使用<body onload="finished()">,但除非必须这样做,否则我真的不想这样做.
注意:Internet Explorer 中的jQuery 1.3.1中存在一个错误,它实际上会在执行内部代码之前等待加载所有图像$function() { }.因此,如果您正在使用该平台,您将获得我正在寻找的行为,而不是上述正确的行为.
pax*_*blo 1023
使用jQuery,您可以$(document).ready()在加载DOM时执行某些操作,并在加载$(window).on("load", handler)所有其他内容时执行某些操作,例如图像.
如果您有jollyrogerJPEG文件(或其他合适的文件),可以在以下完整的HTML文件中看到差异:
<html>
<head>
<script src="jquery-1.7.1.js"></script>
<script type="text/javascript">
$(document).ready(function() {
alert ("done");
});
</script>
</head><body>
Hello
<img src="jollyroger00.jpg">
<img src="jollyroger01.jpg">
// : 100 copies of this
<img src="jollyroger99.jpg">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这样,警报框就会在加载图像之前出现,因为此时DOM已准备就绪.如果你改变了:
$(document).ready(function() {
Run Code Online (Sandbox Code Playgroud)
成:
$(window).on("load", function() {
Run Code Online (Sandbox Code Playgroud)
然后在加载图像之后才会出现警告框.
因此,要等到整个页面准备就绪,您可以使用以下内容:
$(window).on("load", function() {
// weave your magic here.
});
Run Code Online (Sandbox Code Playgroud)
ale*_*lex 156
我写了一个插件,可以在图像加载元素时触发回调,或者每个图像加载时触发一次.
它类似于$(window).load(function() { .. }),除了它允许您定义要检查的任何选择器.如果您只想知道#content(例如)中的所有图像何时加载,这就是您的插件.
它还支持在CSS中引用图片,例如加载background-image,list-style-image等等.
$('selector').waitForImages(function() {
alert('All images are loaded.');
});
Run Code Online (Sandbox Code Playgroud)
GitHub页面上提供了更多文档.
hya*_*kov 48
$(window).load()仅在第一次加载页面时才会起作用.如果你正在做动态的东西(例如:点击按钮,等待加载一些新图像),这将无法正常工作.为此,您可以使用我的插件:
/**
* Plugin which is applied on a list of img objects and calls
* the specified callback function, only when all of them are loaded (or errored).
* @author: H. Yankov (hristo.yankov at gmail dot com)
* @version: 1.0.0 (Feb/22/2010)
* http://yankov.us
*/
(function($) {
$.fn.batchImageLoad = function(options) {
var images = $(this);
var originalTotalImagesCount = images.size();
var totalImagesCount = originalTotalImagesCount;
var elementsLoaded = 0;
// Init
$.fn.batchImageLoad.defaults = {
loadingCompleteCallback: null,
imageLoadedCallback: null
}
var opts = $.extend({}, $.fn.batchImageLoad.defaults, options);
// Start
images.each(function() {
// The image has already been loaded (cached)
if ($(this)[0].complete) {
totalImagesCount--;
if (opts.imageLoadedCallback) opts.imageLoadedCallback(elementsLoaded, originalTotalImagesCount);
// The image is loading, so attach the listener
} else {
$(this).load(function() {
elementsLoaded++;
if (opts.imageLoadedCallback) opts.imageLoadedCallback(elementsLoaded, originalTotalImagesCount);
// An image has been loaded
if (elementsLoaded >= totalImagesCount)
if (opts.loadingCompleteCallback) opts.loadingCompleteCallback();
});
$(this).error(function() {
elementsLoaded++;
if (opts.imageLoadedCallback) opts.imageLoadedCallback(elementsLoaded, originalTotalImagesCount);
// The image has errored
if (elementsLoaded >= totalImagesCount)
if (opts.loadingCompleteCallback) opts.loadingCompleteCallback();
});
}
});
// There are no unloaded images
if (totalImagesCount <= 0)
if (opts.loadingCompleteCallback) opts.loadingCompleteCallback();
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
Dan*_*aro 19
对于那些希望收到$(window).load火灾后请求的单个图像的下载完成通知的用户,可以使用图像元素的load事件.
例如:
// create a dialog box with an embedded image
var $dialog = $("<div><img src='" + img_url + "' /></div>");
// get the image element (as a jQuery object)
var $imgElement = $dialog.find("img");
// wait for the image to load
$imgElement.load(function() {
alert("The image has loaded; width: " + $imgElement.width() + "px");
});
Run Code Online (Sandbox Code Playgroud)
Coz*_*Coz 13
到目前为止,没有一个答案给出了似乎最简单的解决方案.
$('#image_id').load(
function () {
//code here
});
Run Code Online (Sandbox Code Playgroud)
我建议使用imagesLoaded.jsjavascript库.
$(window).load()呢?这是一个范围问题.imagesLoaded允许您定位一组图像,而
$(window).load()目标是所有资源 - 包括所有图像,对象,.js和.css文件,甚至是iframe.最有可能的是,imagesLoaded会更快触发,而不是$(window).load()因为它针对的是较小的一组资产.
| 归档时间: |
|
| 查看次数: |
340390 次 |
| 最近记录: |