2014-10-07 47 views
1

我正在做一個檢查,看看圖像是否有一個網址來源。當我嘗試獲取img src時,爲什麼要獲取瀏覽器URL?

// HTML (short version) 
<div id="image-drop-box"> 
    <img class="promo-img hidden" title="Promo image" src=""> 
</div> 

//JS 
var promoImg = $('#image-drop-box .promo-img'); 
var missingImg = promoImg.prop('src').length == 0 ? true : false; 

console.log(promoImg.prop('src').length); 
console.log(promoImg.prop('src')); 

所有強硬的IMG源是空的,它不斷返回瀏覽器的URL。這是爲什麼?
See the jsFiddle here

+2

使用promoImg.attr(「SRC」)HTTP: //jsfiddle.net/rL2da9ef/1/ – 2014-10-07 09:36:18

回答

4

您正在查看src屬性,它是相對於文檔解析的;一個空白的相對URL解析爲相同的URL,因爲它是在文檔如果你想知道,如果屬性是空白的,看看屬性與attr

var missingImg = !promoImg.attr('src'); // A blank string is falsey, so !"" is true 
console.log("attr: " + promoImg.attr('src')); 

Updated Fiddle

+0

謝謝。是的,在使用'prop'和何時使用'attr'時,我有點困惑。我以爲'prop'正在取代'attr'。 – Steven 2014-10-07 09:40:45

+1

@Steven:不,'prop'用於訪問* properties *,'attr'用於訪問* attributes *。很多屬性都是反射屬性,它們是屬性的直接反映(例如''rel',例如'link'元素),但許多屬性是*計算屬性*,它們是基於屬性計算的*像'img'上的'src','a'上的''href'等等)。然後還有其他人*開始*只是反映attr,然後隨着事情的改變以自己的方向發展(表單字段上的'value')。希望能給你一個什麼時候使用的想法。 :-) – 2014-10-07 12:12:11

-1

這是因爲你得到相對的網址。如果您有<img src="images/a.png">,這意味着您的圖像目錄位於您的文件所在的位置。現在您將其指定爲空字符串,這意味着您的圖像與當前文檔位於同一側。

2

相對URL ""被解析爲「與其相對的URL相同」,即當前文檔。

0
<div id="image-drop-box"> 
<img class="promo-img hidden" title="Promo image" src=""> 
</div> 

// JS

var promoImg = $('#image-drop-box .promo-img'); 
var missingImg = promoImg.attr('src').length == 0 ? true : false; 

console.log(promoImg.attr('src').length); 
console.log(promoImg.attr('src')); 

UPDATED FIDDLE

0

使用.prop('src')它返回值但與全域路徑

所以使用此代碼,將工作

var promoImg = $('#image-drop-box .promo-img'); 
var missingImg = promoImg.attr('src') ? true : false; 
console.log(missingImg); 

,將工作