【发布时间】:2015-03-13 17:51:08
【问题描述】:
我正在编写一个 WYSWIG 内联编辑器,除了编辑器菜单元素之外,所有元素都是可编辑的。
JS 代码
$(function() {
$("body").on("mousedown", function(e) {
if($(e).target().is(".ignore")) {
return;
}
//I hope it will stop the event to bubble up
e.preventDefault();
e.stopPropagation();
});
$("body").on("click", function(e) {
e.preventDefault();
e.stopPropagation();
});
});
HTML
<body>
<a href="http://google">Google</a>
<button onclick="window.location.url='https://www.amazon.com'">Amazon</button>
<button onclick="alert('Ignore unbind')" class="ignore">Ignore</button>
<iframe src="http://w3schools.org" />
演示
http://jsfiddle.net/e7gbm557/2/
问题
在上面的一个中,按钮元素的点击事件被阻止,但如果你点击 iframe 内的锚标记,它会将我带到链接 url。
不仅对于 iframe 中的锚标记,它也适用于其他一些元素。
什么是防止对正文中除某些元素之外的所有元素进行点击操作的正确方法?
【问题讨论】:
-
您无法阻止加载到 iframe 的第三方页面上的事件。您可以在 iframe 上创建一个透明的封面元素,这可能会解决问题。
-
@Teemu 如果正文中的元素绑定点击事件并调用 event.stopPropagation() 会发生什么,我的父点击事件绑定将不会被调用。我说的对吗?
标签: javascript jquery html iframe