javascript - MSIE 如何发出警报 'unknow'?

标签 javascript html internet-explorer events

出于某种目的,我想将 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时,所有先前的属性都被后面的属性覆盖?

我说得对吗?

最佳答案

您无法在 IE 中将 window.event 复制到实际事件的上下文之外。换句话说:当您在脚本中分配处理程序时,不存在任何现有事件。如果您想引用 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/

相关文章:

javascript - 在 Javascript/Node.Js 中按二维数组中的对象属性排序

javascript - ZK中如何防止拖拽所有组件上的文本

Javascript 价格计算器问题(复选框)

php - 即使在 Head 标签之间链接之后,CSS 也不会反射(reflect)到 php 页面

css - 背景颜色隐藏边框半径 ie8

javascript - 通过 Websockets 进行 WebRTC 视频聊天

javascript - 在 Javascript 源代码中,不间断空格总是像空格一样对待吗?

html - 内联矢量图像在表格单元格内换行

html - IE中div高度和宽度的问题

jquery - :nth-child is not working in IE