在 iframe 中的锚点事件委托中, preventDefault() 不足?

问题描述

我希望这对你们所有的网络开发专家来说可能是一个唾手可得的成果:

我通过将鼠标单击处理程序附加到锚元素无序列表的父元素(经典导航设计)来实现事件委托。我正在处理的文档存在于 iFrame 中。处理程序如下所示:

const handleMouseClick = function(evt) {
            if (evt.target.matches('a')) {
                evt.preventDefault();
                evt.stopPropagation();
                console.log('Clicked a tag....',event.target.href);
            }
};

只是为了提供完整的上下文,我点击了一个没有指针事件的覆盖元素 - 所以它应该不会影响点击处理。

无论如何,当单击其中一个标记时,我想阻止 iframe 加载锚中引用的 URL。前面提到的单击处理程序附加到父级,可以很好地接收单击事件,我原以为调用 event.preventDefault() 可以解决问题。但是,我必须同时调用 event.preventDefault() 和 event.stopPropagation() 阻止 iframe 加载链接。如果我删除其中任何一个,iframe 会加载链接吗?

在查看有关 preventDefault 和 stopPropagation 的文献时,我对此的第一个想法是,这是出乎意料的,但我可能会遗漏一些内容。我错过了什么 - 为什么在这种情况下 event.preventDefault() 不够用?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)