我不明白window.event或window.event.srcElement背后的动机。在什么情况下应该使用它?它究竟在DOM中代表什么?
答案 0 :(得分:18)
这里有关于event
对象的w3school says:
事件是JavaScript和事件可以检测到的操作 object提供有关已发生事件的信息。
有时我们希望在事件发生时执行JavaScript,例如 当用户点击按钮时。
您可以使用以下方式处理事件:
node.onclick = function(e) {
// here you can handle event. e is an object.
// It has some usefull properties like target. e.target refers to node
}
但Internet Explorer不会将事件传递给处理程序。相反,您可以使用在事件触发后立即更新的window.event对象。所以crossbrowser处理事件的方式:
node.onclick = function(e) {
e = e || window.event;
// also there is no e.target property in IE.
// instead IE uses window.event.srcElement
var target = e.target || e.srcElement;
// Now target refers to node. And you can, for example, modify node:
target.style.backgroundColor = '#f00';
}
答案 1 :(得分:6)
不确定在较新的浏览器版本中是否已更改此差异,但基本上,“在Microsoft事件访问模型中,有一个特殊的属性window.event,其中包含发生的最后一个事件。” (来自参考资料)
因此,要编写跨浏览器兼容的事件处理程序,您需要执行以下操作:
function doSomething(e) {
if(!e) {
var e = window.event;
}
var ele = e.target || e.srcElement;
// get the clicked element
// srcElement for IE, target for others
}
element.onclick = doSomething;
答案 2 :(得分:0)
function IndentifyMe(){
alert("You clicked on " + window.event.srcElement.tagName);
}
<body onclick = "IndentifyMe()">
尝试此代码,在body标签中包含大量元素,然后尝试单击不同的元素
答案 3 :(得分:0)
活动是用户互动的命脉。没有事件,你 无法与页面交互。
事件处理程序用于在发生特定操作时调用某些JavaScript。如果你想要一些 当用户将光标移动到元素上时触发的行为,您使用onmouseover 事件处理程序。
“DOM脚本:使用JavaScript进行网页设计和文档对象模型:第二版”