【发布时间】:2017-07-16 07:46:41
【问题描述】:
我在 iframe 中加载了相同的域页面(使用沙盒属性)。我使用以下代码来防止点击(和所有其他元素)离开页面:
$('#preview_frame').contents().find('body *').off('click').click(
function(event){
event.stopPropagation();
event.preventDefault();
}
);
但是,页面上的其他 Javascript 似乎正在通过 window.location.href 或 window.location.replace 重定向导航。
我无法更改 iframe 内页面的代码,因为它们是从其他网站代理的。
我尝试使用 iframe 卸载事件但没有成功。
无论做什么/如何完成,我都需要禁用在 iframe 内导航的功能。我不是在谈论可以使用沙盒属性禁用的顶级父导航,我是在谈论 iframe 本身内部的导航。
有可能实现吗?
【问题讨论】:
-
使用
beforeunload事件可以在导航更改发生之前向用户显示一条消息 - 但这不适用于所有浏览器/设置,特别是对于您需要测试并找出的 iframe .如果这不是一个选项,那么您将不得不更深入地研究当其他脚本更改位置时发生的情况,从触发它的原因开始。 -
@CBroe 不幸的是 beforeunload 事件无法取消 url 更改。
-
尝试将事件监听器委托给文档。它也不会影响任何非 jquery 事件侦听器或内联事件侦听器。不检查页面代码没有简单的答案
-
@charlietfl 我的问题是 iframe 中加载的内容几乎来自任何在线网站,因此即使我优化并处理了特定页面,另一个页面也可以包含其他导航方法。我的目标是禁用任何导航的可能性,无论是什么导致它在 Javascript 中可行?
-
没有“一刀切”答案
标签: javascript jquery iframe jquery-events