【问题标题】:How to block all request inside a <iFrame>如何阻止 <iFrame> 内的所有请求
【发布时间】:2012-02-15 14:47:53
【问题描述】:

我们需要阻止加载在 IFRAME 标记中的页面内的所有请求。 该页面位于同一个域中,但我们需要防止在内部页面中导航。 显然,我们不知道内页中的元素。它们可能是链接(anchor link)Javascript调用、JQuery调用、Ajax调用、From submit等。

这是我们处理简单标签和标准提交表单的方式:

$('a').click(function (event) {
    event.preventDefault();
    return false;
});

$(this).submit(function (event) {
    event.preventDefault();
    return false;
});

例如第一个功能很好,但它只是一个标签,但如果使用 JQuery 触发,则该功能不起作用。

第二个工作正常仅适用于标准表单提交,但不适用于 Ajax 提交。

有没有办法处理所有的事件?

【问题讨论】:

  • 这个框架是通过JS/AJAX加载的吗?

标签: javascript iframe


【解决方案1】:

不确定,但是:

$(document).click(function(event){
    event.preventDefault();
});

或者

$('*').unbind('click');
$('[href]').attr('href', '')

看到这个有趣的答案:Best way to remove an event handler in jQuery?

【讨论】:

    【解决方案2】:

    您可以简单地将透明的&lt;div&gt; 覆盖在与 iframe 相同的区域上。 iframe 会正常加载,但您应该无法与之交互。

    【讨论】:

    • TAB,TAB,TAB,回车。现在我已经和它互动了。
    • @Deestan 并且您必须继续按 Tab 键才能访问您想要单击的链接。我并不是说不可能绕过相当艰苦的工作,使用指点设备的普通用户不太可能知道或想要付出努力。
    • 当然比较难访问,但不是你说的那样。 :) 措辞“[...] you should not be able to interact with it”是不正确的。
    • 如果你想学究气,我不确定在所有可能的情况下按下回车键会触发点击事件,但特别是在提问者给出的示例中。我的回复对大多数用户仍然有效,并且可能是满足问题背后需求所需的全部内容。无论如何,这是一个非常简单且相当强大的解决方案。
    猜你喜欢
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多