2014-06-23 36 views
3

我有一个隐藏在一系列披露内容中的许多图像的页面。当你点击部分的标题时,图像(以及其他东西)就会出现。到现在为止还挺好。但是,这些图像中有许多会导致加载时间荒谬,所以我只想在需要显示时加载它们。当我打开该部分时,我检查是否设置了图像的src,如果不是,我将其设置并加载图像。然而,我发现如果我省略了<img>src属性,Javascript(在Chrome中)认为它属于=== ''。它与空字符串相同!我原以为它是undefinedimg标签中缺少src属性如何在浏览器中运行?

这是相当不错的,但它似乎有点太好了。当img<img>标签而没有src时,不同浏览器如何评估img.src?如果我检查img.src === '',在其他浏览器上安全吗?

+0

这不是很难,你可以检查其他浏览器。你不能吗?可能正在检查'img.src ===''|| img.src === undefined'会是对的? – Jashwant

+1

'img.src'检查属性,而不是属性。你可以通过'img.getAttribute('src')检查属性' – Sacho

+0

图像有一个叫'onerror'的事件。你可以处理这个事件...它会检查src空也:http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_img_onerror – HellBaby

回答

1

你可以简单地检查它是这样的:

if (!img.src) { 
    // need to set the .src property here 
} 

由于这个检查任何falsey值,这将覆盖你不管浏览器是否返回nullundefined""。我试着在Firefox,Chrome和IE中使用this jsFiddle,他们都返回了.src属性的空字符串,但是检查上面的任何虚假值都会使你的代码更加容许,如果某些浏览器的某个旧版本有一个略有不同的想法。

0

对于所有现代浏览器,没有SRC的图像已完成。但是,根据IE,没有SRC的图像不完整 - is not loaded。您可以使用getAttribute()来检查src属性是否存在。像:

if(!img.getAttribute('src')) { 
    //the img does not have src attribute 
} 
相关问题