出于某种目的,我想将 Window.Event 对象缓存在一个变量中并稍后使用它,但 MSIE 一直告诉我这是“未知”。
只需在 IE 中运行下面的代码,您就会明白我的意思
我只想问怎么会这样?我错过了什么?
html:
<button id='btn'>Click!!!</button>
JS:
var eventObj = null;
document.getElementById('btn').onclick = function() {
eventObj = window.event;
setTimeout(function() {
alert(typeof eventObj.srcElement);
}, 1000)
}
EIDT 1:
我已经搜索了其他人完成的一些测试,请参见以下内容:
HTML:
<button id='btn1'>Click 1 !!</button>
<button id="btn2">Click 2 !!</button>
JS
var btn1EventObj = null;
document.getElementById('btn1').onclick = function() {
btn1EventObj = window.event;
alert(btn1EventObj.srcElement.id);
}
document.getElementById('btn2').onclick = function() {
alert(btn1EventObj === window.event); // output:false;
alert(btn1EventObj.srcElement === window.event.srcElement); // output: true ;
alert(btn1EventObj.srcElement.id); // output: btn2 ;
}
当 btn1 被单击时,我假设我将“事件对象”缓存在btn1EventObj中,然后单击 btn2:
测试:
btn1EventObj === window.event -> false; // MSIE 中不仅有一个事件对象
btn1EventObj.srcElement === window.event.srcElement -> true //我无法理解下面的这个。
btn1EventObj.srcElement.id -> btn2
看小提琴
所以以上所有告诉我,也许MSIE中引发的所有事件都是共享属性,当点击btn2时,前面的所有属性都被后面的属性覆盖?
我说得对吗?