gpt4 book ai didi

javascript - chrome 中未委托(delegate) click 事件

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

在我的应用程序中,我创建了一些新元素并根据用户的操作将它们附加到页面,

var dv=document.createElement('div');
//set styles for the dv
.....

创建此 div 元素后,我将向其添加一些事件:

MyLib.Event.addDomListener(dv,'click',function(e){
console.info('click');
});
MyLib.Event.addDomListener(dv,'mousedown',function(e){
console.info('mousedown');
});

这是页面中生成的结果(一个div包含一个img标签和一个span标签):

enter image description here

页面加载后,出现问题。

如果直接点击图片,click事件不会触发,但mousedown事件会触发。

如果我直接单击没有图像的 div,一切都会顺利。

似乎,当我单击图像时,click 事件没有委托(delegate)给 div。

但是我通过Chrome开发工具复制了最终生成的代码,它是这样的:

<div id="con" style="position: absolute; border:1px solid red; left: 10px; top: 10px; width: 20px; height: 34px; ">
<img src="http://localhost/MAPALINE/IMAGES/MARKER_LARGE.PNG" id="ov" style="left: 0px; top: 0px; position: relative; width: 20px; height: 34px; ">
<span style="text-align: center; left: 0px; top: 0px; width: 20px; position: absolute; ">1</span>
</div>

然后我将其复制到新的 .html 文件,并添加事件脚本:

<script type="text/javascript">
var con=document.getElementById('con');
con.addEventListener('click',function(e){
console.info('click');
},false);
con.addEventListener('mousedown',function(e){
console.info('mousedown');
},false);
</script>

现在,无论我在 div 内单击什么位置,这两个事件都会发生。

我真的疯了,到底出了什么问题?我没有为生成的 div 做任何特别的事情。

所以我想知道大家是否遇到过这个问题?或者什么情况下会发生这种异常?

<小时/>

更新:

Mylib.Event.addDomListener=function(target,evt,handler){
if(target.addListener){
target.addListener(evt,handler,false);
}else if(target.atttchEvent){
target.attachEvent('on'+evt,handler);
}else
#~ target['on'+evt]=handler;
}

它仅适用于跨浏览器使用,请注意 mousedown 事件无论如何都运行良好。

最佳答案

我注意到您使用了两种不同的方法在两个示例之间附加监听器。

通过尽可能紧密地重复事物来隔离可能的原因始终是最佳实践。尝试坚持使用相同的方法为两个测试附加监听器,这可能会让您获得一些见解。

另外,我不知道“MyLib”是什么,但如果它是某种 JS 库,则问题可能出在该库中。尝试使用原生 JS 方法或不同的库。

关于javascript - chrome 中未委托(delegate) click 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9323944/

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