Javascript FireFox中的“complete”属性有哪些变通方法?
我试图使用jQuery来确定图像是否已正确加载 以下操作正常(在图像状态下返回Javascript FireFox中的“complete”属性有哪些变通方法?,javascript,jquery,dom,Javascript,Jquery,Dom,我试图使用jQuery来确定图像是否已正确加载 以下操作正常(在图像状态下返回true或false),但似乎仅在IE中有效,在FireFox中,它似乎总是返回true——即使状态实际上不完整: var image = $("img#myImage"); alert(image[0].complete); 在JavaScript或jQuery中完成图像的Firefox等价物是什么?我不知道Firefox是否有另一个道具、方法,但是,您可以使用以下解决方法: $(文档).ready
true
或false
),但似乎仅在IE中有效,在FireFox中,它似乎总是返回true
——即使状态实际上不完整:
var image = $("img#myImage");
alert(image[0].complete);
在JavaScript或jQuery中完成图像的Firefox等价物是什么?我不知道Firefox是否有另一个道具、方法,但是,您可以使用以下解决方法: $(文档).ready(函数(){
})) 除了
complete
之外,您还可以尝试检查img
元素的一个维度:
function isImageLoaded() {
var theImage = $('#myImage');
if (!theImage.get(0).complete) {
return false;
}
else if (theImage.height() === 0) {
return false;
}
return true;
}
在Firefox中,未加载的img
或带有无效src
属性的img
应具有.height()
和.width()
等于0
。在Chrome和Opera中,两种方法似乎都不能正常工作。在那些浏览器中,image.height()
在我的测试中总是返回一个正值。您可以使用load(),但要小心Internet Explorer:如果缓存了图像,它不会触发事件
if($img[0].readyState === 4){ // image is cached in IE
alert("Image loaded!");
}else{
$img.load(function(){ // for other browsers and IE, if not cached
alert("Image loaded!");
});
}
是的,我正在开发一个动态加载图像的AJAX页面。我还想检测是否加载了图像,这样我就可以用jQuery效果转换它们
img = $('myImageID')
img[0].src = 'http://new.url.for.image/';
alert(img[0].complete); // seems to always return true
// in Firefox, perhaps because
// the original src had been loaded
所以我不得不这样做
img = $('myImageID')
newImg = $('<img>') // create a completely new IMG element
.attr('src', 'http://new.url.for.image/')
.attr('id', img[0].id);
img.replaceWith(newImg);
img = newImg;
alert(img[0].complete);
img=$('myImageID')
newImg=$('
(注意:我还没有测试这段精确的代码,这是我试图做的一个简化版本,但希望能传达这个想法。)
Simon.Jquery让它变得非常简单
只需使用.load()函数就可以在图像完全加载时绑定事件
$("img").load(function() {
// Yeay, it was loaded, and works in all browsers!
});
在我的例子中,我使用这个方法
document.images['XXX'].addEventListener('load', dealJob(), false);
document.images['XXX'].onload = function() {dealJob();}
在函数dealJob中,我使用document.images['XXX'].complete检查图像,但它总是返回true
当我改变使用该方法时
document.images['XXX'].addEventListener('load', dealJob(), false);
document.images['XXX'].onload = function() {dealJob();}
在函数dealJob中,document.images['XXX'].complete的结果是正确的
也许它可以帮助您。我也这么认为;但我需要说明的一个例子如下:此应用的一个可能的图像驻留在Amazon的云端,如果安全设置是这样的,文件存在,但访问被拒绝;然后它实际上会向该调用返回一些XML内容,浏览器会重新启动该调用旋转高度为15,宽度为60。(或类似的任意值)有趣…如果我遇到解决方案,我将再次发布。您无法设置图像的完整属性。它将引发错误,因为该属性是只读的。如果图像被缓存,IE8将不会触发加载事件。请参阅David Walsh的这篇博客文章:上面的评论也适用于MS Edge。