2015-07-21 46 views
1

我只是無法理解window.event()在JavaScript中的作用。它沒有任何定義。 document.event()同樣的事情。我也不明白這兩者之間的區別。他們是否接受任何論點?什麼是JavaScript中的window.event?

+0

這些都不存在,除了一些舊的IE版本。 – SLaks

+0

https://developer.mozilla.org/en-US/docs/Web/API/Window – wiretext

回答

0

事件發生時會調用事件,所以例如click和keypress是事件。

然而window.event()的原因是爲了跨瀏覽器的兼容性。因此,這裏是一些javascript:

object.onclick = function(e) { 
    // e holds all of the properties of the event 
    // You can access the event properties like so e.target 
} 

的Internet Explorer但是,不處理JavaScript的方式其他瀏覽器做。因此,對於Internet Explorer來處理相同的代碼上面我們會寫一些關於

object.onclick = function() { 
    alert(window.event.srcElement); // Same as e.target 
} 

行或者你可以把它們都在一起,像這樣結合:

object.onclick = function(e) { 
    e = e || window.event; // Use e if it exists or e will be equal to window.event 
    var target = e.target || e.srcElement; // We then use the e.target property but if that doesn't exist we use e.srcElement 
    alert(target); 
} 
+0

*「然而對於window.event()的原因是爲了跨瀏覽器兼容」* Uhm no。 IE瀏覽器簡單地做了不同於其他瀏覽器,這就是爲什麼我們擁有它。另外請注意,OP正在討論'window.event()',而不是'window.event'。 –

1

HTML 4增加了讓事件在瀏覽器中觸發動作的功能,例如當用戶單擊某個元素時啓動JavaScript。

Here您可以檢查事件列表可能有用

我不知道是否window.event現在使用的天。這似乎是一個非常通用的。相反,你可以使用更多的細節窗口的事件,如onerroronloadonresizeonstorage

使用它們,一定要檢查瀏覽器兼容性之前。

謝謝。

0

您可以處理使用事件:

htmlElementObj.onclick = function(e) { 
//e->event object 
}; 

但是,Internet Explorer不會將事件對象傳遞給處理程序。相反,您可以使用在事件被觸發後立即更新的window.event對象。

htmlElementObj.onclick = function(e) { 
    e = e || window.event; 
} 
0

「非正式」window.event不是「window」的「方法」,因此不用括號和/或參數調用。相反,它是用於定位當前活動事件對象的Window的Microsoft IE瀏覽器唯一非正式全局瀏覽器「屬性」(由於瀏覽器是單線程,因此一次只能激活一個事件)。有關事件對象可能提供的更多信息,請參閱http://www.w3schools.com/jsref/dom_obj_event.asp

因爲IE9 +和其他瀏覽器將事件對象作爲第一個參數傳遞給已註冊的事件處理函數,所以Window.event僅在IE9之前需要。一個標準的瀏覽器處理函數「onclick(e)」可以通過使用傳入的本地參數「e」(或者任何處理作者命名它)來訪問關於當前事件的信息,而在IE9之前,處理程序的參數「e」是undefined需要處理程序來訪問window.event。在實踐中,這意味着在處理事件時,「舊IE」寬容代碼檢查傳入的「事件」,如果找不到,則查找window.event:function handler(e){var e = e?e :窗口。事件;}

爲了儘可能地提供幫助,據我所知(可以找到),window.event作爲IE的一部分非正式接受,但document.event不是,因此只能通過甚至比非正式的IE容忍度還要低(如果它有效的話,更可能根據IE版本而變化)。