2009-12-30 52 views
1

我一直試圖自己學習幾個小時,只是不得不放棄和懇求憐憫。JavaScript - 通過使用其src標記檢測圖像是否存在

我正在寫一個與我的工作OWA(Outlook Web Access)進行交互的greasemonkey腳本,沒有任何花哨。

目標是找到並計算圖像(沒有名稱或ID)存在於「收件箱」內的次數。

這裏是我的簡單測試失敗,我當然希望我知道爲什麼:

var ilist = document.images; 
for(var i = 0; i < ilist.length; i++) { 
    if(ilist[i] == "msg-unrd.gif") { 
     // found the image 
     alert('Found new message image!'); 
    } 
} 

的目的是爲了把這些「新消息」圖像的數量和它們放置到將內使用的變量頁面標題。

parent.document.title = "(..+UNREAD_COUNT+..) Inbox"; 

「收件箱」和我想檢測和計數該消息的來源看上去像這樣:

img alt="Message: Unread" src="8.1.393.1/themes/base/msg-unrd.gif" 

我知道有對OWA寫了幾個其他的Greasemonkey腳本,但源自我嘗試使用的源以來已經改變,所以它們也失敗了。

希望你的假期一直很棒!

回答

4

我會那樣做(你忘了src屬性):

var images = document.getElementsByTagName('img'); 
var count = 0; 
for (var i = 0; i < images.length; i++) 
    if (images[i].src.match(/msg-unrd\.gif$/)) 
     count++; 

...或者,如果您使用Prototype JS

var count = $$('img[src~=msg-unrd\.gif]').length; // Win! 
+0

我會建議你使用'RegExp.test',而不是'String.match',因爲你只需要知道,如果字符串匹配或不...'/ MSG- unrd \ .gif $ /。test(images [i] .src)' – CMS 2009-12-30 18:28:55

+0

哇,我真不敢相信我浪費了六個小時的時間試圖解決這個問題。從解決方案的角度來看,我至少還有六十年的時間從​​計算出來。 非常感謝。 – Aaron 2009-12-30 18:30:50

+0

@CMS:對,使用'test'實際上會更好。 @Aaron:沒問題;) – watain 2009-12-30 18:32:28

1

您需要的URL與圖像元素的src屬性比較,而不是與整個圖像元素本身:

String src = "msg-unrd.gif"; 
if (ilist[i].src.match(src + '$') == src) { 
    // ... 
} 

編輯它實際上應該年底與指定的URL,我忽略那。我改進了代碼示例。

0

document.images仍然是得心應手:

var count=0, images=document.images; 
for(var i=0, L=images.length;i<L;i++){ 
     if(images[i].src.indexOf('msg-unrd.gif')!=-1)count+=1; 
} 
0

如果你想使用jQuery,你可以在一行中做到這一點(雖然它仍然是一樣的w在後端ORK)

$('img[src$=msg-unrd.gif]').size() 
相關問題