JavaScript 如何重新识别事件对象变量



关于 JavaScript 事件对象的快速问题 - JavaScript 如何知道我何时尝试将事件变量传递给函数? 例如,当我定义一个onclick处理程序时,如下所示:

<button onclick='SendMessage(event)'></button>

JavaScript 传递事件变量只是因为我将其命名为"event"吗? 如果是这样,它还保留了哪些其他变量名称来传递事件变量?(e? 等等。

如果是这种情况,可以通过命名局部或全局变量"event"、"e"等来覆盖它们吗?

必须在内联事件中调用eventevent 不是关键字,也不是 JavaScript 中的保留字;它只是早期Netscape工程师决定的变量名称。

为事件提供的内联文本有效地将 1换行为:

function (event) {
   // the inline code
}

IE 使用 window.event 属性来传递事件信息,但名称一致,因此使用 event 将根据需要回退到正常的 JavaScript 变量分辨率。

当然,如果直接附加函数对象,那么事件变量,因为它只是第一个参数,可以命名为所需的任何名称。不幸的是,IE的window.event方法也必须处理,并且调用参数event并不能解决它。

elm.onclick = function (my_event_name) {
    my_event_name ||= window.event // for IE
    ...
}

(我建议尽可能避免内联事件,并使用统一/简化事件的库。

祝您编码愉快!

<小时 />

1 HTML 5 中详细介绍了此行为:事件处理程序、事件处理程序内容属性:

[

内联事件,例如onclick,text]必须包含有效的JavaScript代码,当解析时,它将与[函数]生产相匹配。

使用上面创建的脚本执行环境,创建一个函数对象 ..让函数具有一个名为 event 的参数

相关内容

  • 没有找到相关文章

最新更新