2011-12-08 47 views
5

我在JSON订阅源中有URL,每个URL都包含一个图像。我想验证那些有图像或没有图像的网址(NULL)。如何使用javascript验证此功能。 因为我是初学者,我不知道,如何验证这一点。感谢如何验证URL中的内容(Javascript)

 JSON feed with image n NULL 
     { 

     previewImage:"http://123.201.137.238:6060/feed/videoplay/Jackie.png", 

     }, 
     { 

     previewImage:"http://www.snovabits.net/feed/ImageMI/WarCraft.jpg", 

     }, 
+1

您可以发布样本JSON,最好与他人访问链接。另外,发布您迄今为止已编写/尝试的代码。 –

+0

除非所有图像与您的JavaScript托管在同一个域中,否则您无法单独使用JavaScript。是这样吗? –

+0

有没有其他方法?要做到这一点 – FreshBits

回答

1

有趣的问题!

尝试将图像添加到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> 
+0

WOw!大!我完全期待这个答案。非常感谢您的回复。 – FreshBits

0

如果你想检查字符串为null只是做if(previewImage == "") { /* image is null, do stuff */ },但如果你想检查图像确实存在,我建议做通过AJAX的GET请求,并检查HTTP响应,如:( jQuery):

$.ajax({ 
    url: "http://123.201.137.238:6060/feed/videoplay/Jackie.png", 
    cache: false, 
    error: function(){ 
     alert("image doesn't exist!"); 
    } 
}); 

但是如果可能的话,这样做会更好。

+1

好主意,但不适合我。尽管图像存在,警报仍会触发。 – Jpsy