2012-02-21 26 views
0

學習一些js代碼從藪書 像如何判斷IE事件類型在javascript

function doSomething(e) { 
    if (!e) { 
     var e = window.event; 
     alert("this is IE!"); 
    } 
} 

假設我有一個元素

<h1 onclick="doSomething(event)">Hello World2</h1> 

當我點擊它,它不會在發出警報IE(至少在IE6中),我使用的方式不正確?

的第二個問題是,假設它可以工作,我每次使用它的時候,

我要送一事件參數,即使我不是嗎? 我可以判斷沒有參數的IE事件類型嗎?

回答

0

這是因爲你有什麼,e總是對Event對象的引用。 eventonclick屬性在IE中解析爲window.event,而在不支持window.event的Firefox等瀏覽器中,在屬性值的範圍內有一個event變量。另見this answer

地方,你需要檢查window.event的情況是,當你使用屬性分配的事件處理程序:

var h1 = document.getElementsByTagName("h1")[0]; 
h1.onclick = doSomething; 
-1
優爾

沒有寫任何其他coniditon所以它什麼都不做,

根據你的代碼當你點擊鏈接Hello World事件通過,你寫這樣(!E)這是錯誤的,所以它不會做任何事情

試試吧,會提醒

function doSomething(e) { 
    if (e) { 
     var e = window.event; 
     alert("this is IE!"); 
    } 
} 

如果你想使用窗口事件,你可以像window.event.target Firefox和IE瀏覽器window.event.srcElement

0

你的意思是這個

function doSomething(e) { 
    if (window.event) { 
    e = window.event; 
    alert("this is IE!"); 
    } 
    // here you can use e in either IE or Gecko/webkit 
} 
什麼
+0

我不認爲這可以修復任何東西。問題是在問題的代碼中,'e'總是存在於所有瀏覽器中。 – 2012-02-21 15:24:25

+0

在我看來,我發佈的作品,並會警惕,最初發布的內容也將工作,但什麼都不做。 – mplungjan 2012-02-21 15:34:52

+0

你說得對,它解決了在IE中顯示警報的直接問題。 – 2012-02-21 16:15:37

相關問題