gpt4 book ai didi

javascript - MSIE 如何提醒 'unknow' ?

转载 作者:行者123 更新时间:2023-11-28 00:17:18 25 4
gpt4 key购买 nike

出于某种目的,我想将 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

参见 fiddle

所以以上所有告诉我,也许 MSIE 中引发的所有事件都是共享属性,并且当单击 btn2 时,所有先前的属性都被后面的属性覆盖?

我说得对吗?

最佳答案

您不能将 window.event 复制到 IE 中实际事件的上下文之外。换句话说:当您在脚本中分配处理程序时,没有现有的事件。如果要引用 window.event,则必须内联分配处理程序。

MSDN:

The event object is available only during an event—that is,
you can use it in event handlers but not in other code.

HTML:

<button id='btn' onclick="clicker(event);">Click!!!</button>

和JS:

function clicker(e){
setTimeout(function (){
alert(e.srcElement);
},1000);
return;
}

event在 MSDN 中。

关于javascript - MSIE 如何提醒 'unknow' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11482691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com