JavaScript中的window.event是什么?

时间:2015-07-21 16:02:37

标签: javascript events

我无法理解JavaScript中window.event()的作用。它没有任何定义使用。 document.event()也是如此。我也不明白这两者之间的区别。他们接受任何论点吗?

4 个答案:

答案 0 :(得分:2)

事件是在发生某事时调用的事情,因此例如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);
}

答案 1 :(得分:1)

  

HTML 4添加了让事件在浏览器中触发操作的功能,   比如在用户点击元素时启动JavaScript。

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

我不知道window.event现在是否已经使用了一天。这似乎是一个非常通用的。相反,您可以使用更具体的窗口事件,例如onerroronloadonresizeonstorage

在使用它们之前,请务必检查浏览器兼容性。

谢谢。

答案 2 :(得分:1)

"非正式" window.event不是"方法" " window",因此不会使用括号和/或参数调用。相反,它只是一个Microsoft IE非正式的全球浏览器"属性"用于定位当前活动事件对象的Window(由于浏览器是单线程的,因此一次只能激活一个事件)。有关事件对象可能提供的内容的更多信息,请参阅http://www.w3schools.com/jsref/dom_obj_event.asp

仅在IE9之前需要Window.event,因为IE9 +和其他浏览器将事件对象作为第一个参数传递给已注册的事件处理程序。一个标准的浏览器处理程序"功能onclick(e)"将使用传入的本地参数" e"来访问有关当前事件的信息。 (或者处理程序作者命名的任何东西),而在IE9之前,处理程序的参数" e"将是未定义的,需要处理程序访问window.event。

在实践中,这意味着在处理事件时,"旧的IE"宽容代码检查"事件"传入,如果没有找到,则查找window.event:function handler(e){var e = e?e:window.event;}

为了尽可能地提供帮助,据我所知(并且可以找到),window.event被非正式地接受为IE的一部分但是document.event不是,因此只能通过非正式的方式工作IE容忍度(如果它完全有效的话,甚至更可能根据IE版本而变化)。

答案 3 :(得分:0)

您可以使用以下方式处理事件:

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

但Internet Explorer不会将事件对象传递给处理程序。相反,您可以使用在事件被触发后立即更新的window.event对象。

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