【发布时间】:2022-10-01 11:02:01
【问题描述】:
我已经阅读并支持this question 的标题相同,但我遇到的问题不同。
在我的场景中,如果我用 mouseleave 或 mouseenter 替换单击事件名称,则该事件可以与其他任何相同的事件一起触发。
HTML:
const template = `
<div id=\"tools\">
<div id=\"container\">
<div class=\"a\" id=\"a\" title=\'a\'></div>
<div class=\"b\" id=\"b\" title=\'b\'></div>
</div>
</div>
`;
JS函数在扩展WebComponent HTMLElement的类的构造函数中调用:
called_in_constructor(){
this.attachShadow({ mode: \"open\" });
// const style = document.createElement(\"style\");
// style.textContent = styled({});
// this.shadowRoot.appendChild(style);
this.shadowRoot.innerHTML += template;
this.shadowRoot
.getElementById(\"a\")
.addEventListener(\"click\", () => this.write_some_log());
}
write_some_log(){
console.log(\'click triggered\')
}
当我将 \"click\" 替换为 \"mouseenter\" 时,我可以在鼠标进入 SVG 后在 Devtool 控制台中看到 \'click trigger\' 消息(使用样式化函数作为背景图像添加),但它不会\' t 适用于点击事件。当我想通过单击来检查气泡/弹出窗口时,气泡/弹出窗口会消失,阻止我检查它。将 div 更改为按钮后,它也可以工作:
const template = `
<div id=\"tools\">
<div id=\"container\">
<button class=\"a\" id=\"a\" title=\'a\'></div>
<button class=\"b\" id=\"b\" title=\'b\'></div>
</div>
</div>
`;
有人可以提供一些建议吗?提前致谢。
标签: javascript event-handling mouseevent