2009-07-27 116 views
0

問題是什麼?超鏈接不需要的前綴Internet Explorer [Javascript]

只有在Internet Explorer(驚喜)是我的代碼執行不正確。下面這段簡短的代碼應該爲每個「a」標籤附加一個「onclick」動作。這很奇妙,但看看第五行,它應該將第二個函數參數設置爲錨標記的「href」屬性的值。在WebKit,Mozilla等中,它很好。如果我們將「href」設置爲「lorem_ipsum」,那麼WebKit,Mozilla等將檢索正確的結果並將第二個函數參數設置爲「lorem_ipsum」,Internet Explorer前綴「http://www.some.site/」,因此我們將「http://www.some.site/lorem_ipsum」報告爲第二個參數。 Internet Explorer不正確,因爲這不是錨標記實際值的「href」屬性。

Anchors=Parent.getElementsByTagName("a"); 
Anchor=0; 
while(Anchor<Anchors.length){ 
    Anchors[Anchor].onclick=function(){ 
     Plot("",this.getAttribute("href")); 
     return false; 
    }; 
    Anchor++; 
}; 

我該如何解決這個荒謬的問題?在最後的斜線之前,我需要從字符串中剝離嗎?這似乎是一個漫長的囉嗦!有任何想法嗎?

回答

1

容易...

Anchors[Anchor].onclick=function() { 
    var href = this.href || this.getAttribute("href"); 
    if(href.indexOf(location.href) >= 0) 
     href = href.substring(location.href.length); 

    Plot("", href); 
    return false; 
}; 
+0

感謝您的快速回復。你能否解釋你的答案,以便我可以看到它爲什麼發生了,以及你如何修復它。 KR,Jay – Jay 2009-07-27 16:12:16

+0

location.href是一個預定義的變量,包含當前窗口的URL。我從鏈接中獲取HREF屬性,如果它包含此值,則將其子字符串去掉。簡單。 – 2009-07-27 17:12:20

相關問題