gpt4 book ai didi

Javascript IE8 未在 AttachEvent 中传递 'this'

转载 作者:行者123 更新时间:2023-11-28 15:35:53 26 4
gpt4 key购买 nike

这是一个脚本,它查看页面上存在的链接并将 mousedown 事件监听器绑定(bind)到每个链接。当触发 mousedown 事件时,它会调用一个函数,该函数会使用链接的 href 创建警报。在 IE9+ 中,这工作正常,但在 IE8 中,这是未定义的。

<html>
<body>
<a href="http://www.example.com">test</a>
<script>
var c=function(){alert(this.href)};
var a=document.getElementsByTagName("a");
for(var b=0; b<a.length; b++) {
if (a[b].addEventListener) {
a[b].addEventListener("mousedown",c,false);
} else {
a[b].attachEvent("onmousedown",c);
}
}
</script>
</body>
</html>

我尝试将 thisthis.href 添加为函数的参数,但看起来这些函数不接受参数。有人知道我如何让它发挥作用吗?

最佳答案

试试这个:

var c = function (e) {
e = e || event; // if e is not available, use global event object
var target = e.target || e.srcElement; // some browsers use target to refer to event target, and some srcElement
alert(target.href);
};

我认为IE8使用全局事件对象,而不是在回调函数中发送参数。

关于Javascript IE8 未在 AttachEvent 中传递 'this',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25657548/

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