有趣的问题!
尝试将图像添加到div(使用jQuery,div可以使用display:none;隐藏)。
然后定期测试图像的属性(使用setInterval循环)是否指示成功加载。定义一些超时之后,setInterval将自行终止。
该属性可在Chrome和Firefox的测试成功IMG负载:
naturalHeight != 0
此属性适用于在IE7,8,9测试成功IMG负载:
fileCreatedDate != ''
测试既要使它适用于所有主流浏览器。
下面是一个小提琴,看看道具在加载过程中如何以10ms步长变化。尝试在不同的浏览器!:
http://jsfiddle.net/xGmdP/
在Chrome浏览器和FF你甚至可以通过检查所有图像的完整财产替换为的setInterval循环超时。但不幸的是,这在IE中不起作用(完整在IE中对于无法加载的图像始终保持不变)。
最后这里是小提琴的完整代码:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/JavaScript"></script>
<script type="text/JavaScript">
$(function(){
$('#images').prepend('<img id="img1" src="http://123.201.137.238:6060/feed/videoplay/Jackie.png">')
$('#images').prepend('<img id="img2" src="http://www.snovabits.net/feed/ImageMI/WarCraft.jpg">')
setInterval(test, 10);
})
function test(){
var props=['naturalHeight', 'complete', 'fileCreatedDate', 'clientHeight', 'offsetHeight', 'nameProp', 'sourceIndex'];
for(i in props){
var pr = props[i];
$('#testresults').append('1:'+pr+' = ' + $('#img1').prop(pr)+'<br>');
$('#testresults').append('2:'+pr+' = ' + $('#img2').prop(pr)+'<br>');
}
$('#testresults').append('---<br>');
}
</script>
</head>
<body>
<div id="images"><div>
<div id="testresults"></div>
</body>
</html>
您可以发布样本JSON,最好与他人访问链接。另外,发布您迄今为止已编写/尝试的代码。 –
除非所有图像与您的JavaScript托管在同一个域中,否则您无法单独使用JavaScript。是这样吗? –
有没有其他方法?要做到这一点 – FreshBits