2012-12-18 23 views
1

我正在使用剛剛移動到iFrame中的舊式框架網站。Javascript和target =「_ top」

假設我有以下功能:

<script language = "javascript"> 
    function myFunction(){ 
    <!-- no console.log in IE 7 (my required target browser) --> 
    alert('sup, yo?'); 
    } 
</script> 

及以下超鏈接觸發功能:

<a href="javascript:myFunction();" target="_top">click me</a> 

前舉到iframe這個工作確定。一旦網站被搬進了iframe,點擊IE瀏覽器的鏈接(不FF或Chrome),我會得到不斷所謂有用的錯誤:

Line: 1 
Object expected 

一旦我刪除了target="_top"屬性的功能會的工作,所以我不需要幫助解決這個問題,但我的問題是:

什麼是IE瀏覽器與目標屬性時調用一個JavaScript函數來調用此行爲?我沒有安裝其他版本的IE,這是8+以及目前的行爲?

謝謝。

+2

IE7肯定有'console.log',你只需要確保你居然開web開發者窗口 - 我知道對:/ – Halcyon

+3

你不應該使用'href =「javascript:myFunction();」'來運行JS。使用'onclick'屬性或從JS中設置處理程序(首選)。那麼你不必擔心這個問題 –

+0

也許它試圖找到'_top'框架中的'myFunction'函數?無論如何,'target'已被棄用。其實寫你的意思,而不是依靠古怪的行爲。 – Halcyon

回答

1

試圖理解行爲沒有意義。您正在使用的技術沒有很好的定義,現在也沒有被開發人員使用。

相反的href="javascript:myFunction();,只是使用onclick="myFunction(); return false"甚至更​​好,從JS設置處理類似下面

<a href="pageForUsersWithoutJs.html" id="my-link" >click me</a> 
<script type="text/javascript"> 
// This is old school, but works for all browsers, you should use a library instead 
document.getElementById('my-link').onclick = function() { 
    // Do your thing 
    return false; // so the link isn't followed 
}; 
</script> 
+0

我並不反對這種做法很差,但我繼承了6個遺留網站(10歲以上),直到它們可以重建或日落,理解它的價值。你想介紹一下「從JS設置處理程序」嗎? – Travis

+0

檢查['elm.addEventListener'](https://developer.mozilla.org/en/docs/DOM/element.addEventListener)的存在性。發現了什麼?用它。未找到(IE <9)?使用['elm.attachEvent'](https://developer.mozilla.org/en/docs/DOM/element。的addEventListener#兼容性)。 –

+0

「你應該用庫來代替」我通常使用jQuery,但是感謝你的解釋。 – Travis

相關問題