我相信 javascript 中有一个名为 的对象event
,我在一些不是由我编写的代码中看到它,看起来像这样:
event.x + document.body.scrollLeft;
我无法找到更多信息,此外,该对象在 Firefox 中未定义。它在所有其他浏览器中都能正常工作。谁能给我提供更多信息?具体来说,如何在 Firefox 中访问此对象?
我相信 javascript 中有一个名为 的对象event
,我在一些不是由我编写的代码中看到它,看起来像这样:
event.x + document.body.scrollLeft;
我无法找到更多信息,此外,该对象在 Firefox 中未定义。它在所有其他浏览器中都能正常工作。谁能给我提供更多信息?具体来说,如何在 Firefox 中访问此对象?
clientX
并且clientY
是您正在寻找的官方事件属性处理程序。screenX
尽管您可能也想考虑screenY
。
event.x
而且event.y
,那些是什么?
首先, andx
属性y
并非在所有事件中都存在。它在触发的事件上是相对的。
这是一个例子:
document.body.onclick = function(){console.log(window.event.x)};
如果您在浏览器的控制台中粘贴并执行该代码,它将记录您x
每次click
.
虽然看一下这个例子:
document.body.onkeyup = function(){console.log(window.event.x)};
undefined
每次您从键盘释放一个键时,控制台都会记录下来,因为该onkeyup()
事件不包含x
和y
属性的任何值。
event
(或只是e
)是事件处理函数的常见第一个参数名称。
在除 IE 之外的所有现代浏览器中,注册为事件处理程序的函数将被传递一个Event对象作为它的第一个参数,其中包含有关事件的信息。
在 IE 中,全局event
对象 ( window.event
) 中提供了类似的信息。
由于这些浏览器差异,您经常会看到事件处理程序样板代码,例如:
var clicked = function (e) {
e = e || window.event; // sets e to window.event if no parameter was passed
};