FireFox中的`complete`属性有哪些变通方法?
我试图使用jQuery来确定图像是否已正确加载。
以下工作正常(并且从图像状态返回true
或false
)但似乎只在IE中工作,在FireFox中,它似乎总是返回true
– 即使状态实际上是不完整的:
var image = $("img#myImage"); alert(image[0].complete);
Firefox或jQuery中的image.complete
的Firefox等价物是什么?
除了complete
之外,您还可以尝试检查img
元素的一个维度:
function isImageLoaded() { var theImage = $('#myImage'); if (!theImage.get(0).complete) { return false; } else if (theImage.height() === 0) { return false; } return true; }
卸载的img
或具有无效src
属性的img
应该在Firefox .height()
和.width()
等于0
。 在Chrome和Opera中,这两种方法似乎都无法正常工作。 在那些浏览器中, theImage.height()
总是在我的测试中返回一个正值。
Jquery让它变得非常简单。
您可以使用.load()函数在完全加载图像时绑定事件。
$("img").load(function() { // Yeay, it was loaded, and works in all browsers! });
是的,我只是在动态加载图像的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 = $('') // 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);
(注意:我没有测试过这个确切的代码,它是我试图做的简化版本,但希望能传达这个想法。)
西蒙。
您可以使用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!"); }); }
myimage=new Image(); myimage.src="whatever"; if(myimage.height>0 && myimage.complete){alert("my image has loaded");} // might be overly simple but works for me in all browsers i think.
我不知道firefox是否有另一个prop,方法可以做到但是,你可以使用这个解决方法:
$(文件)。就绪(函数(){
$("img").each( //for each image declared in html function(index) { document.images[index].complete= false; document.images[index].onload = function(){ this.complete= true}; });
});
就我而言,我使用的方法
document.images['XXX'].addEventListener('load', dealJob(), false);
在函数dealJob中,我使用document.images [‘XXX’]。完成检查图像,但它总是返回true。
当我改为使用该方法
document.images['XXX'].onload = function() {dealJob();}
在函数dealJob中,document.images [‘XXX’]。完成的结果是正确的。
也许它可以帮到你。