gpt4 book ai didi

javascript - 我是否保证在 JavaScript 事件处理程序中获得具有目标属性的事件对象?

转载 作者:行者123 更新时间:2023-11-29 18:24:13 25 4
gpt4 key购买 nike

正如标题所说,我很好奇是否可以保证在 Javscript 事件处理程序中获取事件对象。我问的主要原因是我见过类似这样的 onClick 事件处理程序。

function(e) {
if(e && e.target) {
//Code in here
}
}

这对我来说似乎是错误的,但我知道 Javascript 在浏览器之间可能会有细微的差异。是否有适合检查事件对象的时间?还是事件目标?似乎您必须有一个目标才能触发事件。

最佳答案

没有。旧版本的 Windows 不会将事件参数传递给事件处理程序。他们将其放在全局变量 window.event 中,目标位于 .srcElement 中。除了那个异常(exception),你应该总是得到一个事件结构。

旧版本 IE 的解决方法是:

function(e) {
if (!e) {
e = window.event;
e.target = e.srcElement;
}
// code that uses e here
}

但是,通常情况下,这是由您用来安装事件处理程序的函数在更高层次上解决的。例如:

// add event cross browser
function addEvent(elem, event, fn) {
if (elem.addEventListener) {
elem.addEventListener(event, fn, false);
} else {
elem.attachEvent("on" + event, function() {
// set the this pointer same as addEventListener when fn is called
window.event.target = window.event.srcElement;
return(fn.call(elem, window.event));
});
}
}

关于javascript - 我是否保证在 JavaScript 事件处理程序中获得具有目标属性的事件对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15207928/

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