Javascript 停止嵌入式iframe重定向

Javascript 停止嵌入式iframe重定向,javascript,jquery,html,iframe,Javascript,Jquery,Html,Iframe,有没有办法阻止嵌入式iframe被单击或使整个iframe可单击?我希望iframe能够提取数据,但我不希望访问者能够单击iframe并从iframe上的一个位置重定向 可能吗?以下是iframe的一个示例: <iframe src="http://www.indiegogo.com/project/157203/widget?escape=false" width="224px" height="429px" frameborder="0" scrolling="no"></

有没有办法阻止嵌入式iframe被单击或使整个iframe可单击?我希望iframe能够提取数据,但我不希望访问者能够单击iframe并从iframe上的一个位置重定向

可能吗?以下是iframe的一个示例:

<iframe src="http://www.indiegogo.com/project/157203/widget?escape=false" width="224px" height="429px" frameborder="0" scrolling="no"></iframe>

这是可能的,尽管我不推荐

扰乱默认浏览器行为(如锚定标记单击)通常会让用户感到沮丧,并阻止他们返回您的页面

此外,正如dystroy在回答中所说,在页面上删除iFrame所附带的法律条件通常明确禁止这种行为

也就是说,从事件处理程序返回false将阻止浏览器接收事件:

document.getElementById('yourFrame').contentWindow.document.body.onclick = function () { 
    return false; 
};
值得一提的是,如果iframe位于与脚本运行所在域不同的域中,那么这将不起作用。如果是这种情况,您将需要构造一个透明的覆盖div,该div将容纳click事件,并将其绝对定位在iframe上


这里有一把小提琴演示了这两种方法:

这是可能的,尽管我不推荐它

扰乱默认浏览器行为(如锚定标记单击)通常会让用户感到沮丧,并阻止他们返回您的页面

此外,正如dystroy在回答中所说,在页面上删除iFrame所附带的法律条件通常明确禁止这种行为

也就是说,从事件处理程序返回false将阻止浏览器接收事件:

document.getElementById('yourFrame').contentWindow.document.body.onclick = function () { 
    return false; 
};
值得一提的是,如果iframe位于与脚本运行所在域不同的域中,那么这将不起作用。如果是这种情况,您将需要构造一个透明的覆盖div,该div将容纳click事件,并将其绝对定位在iframe上


这里有一把小提琴演示了这两种方法:

由于您的iframe显然是由另一个域提供的,因此无法使用标准解决方案

但是你可以在上面放一个隐形的div,就像这样:


但大多数情况下,iframe包含合同禁止这些事情。在执行之前,请先查看您的协议。

由于您的iframe显然由另一个域提供服务,因此无法使用标准解决方案

但是你可以在上面放一个隐形的div,就像这样:


但大多数情况下,iframe包含合同禁止这些事情。在使用之前,请先查看您的协议。

如果您使用的是HTML5,我建议您使用新的沙盒属性,但它尚未与所有浏览器兼容

在我的例子中,我只是添加了允许表单和允许脚本作为沙盒属性值,嵌入的站点不再重定向,仍然可以运行JavaScript

例:

如果有人知道使用这种方法的缺点,我很想知道


其他人也有同样的答案:我后来遇到了这个答案

如果你使用的是HTML5,我建议使用新的沙盒属性,但它还不能与所有浏览器兼容

在我的例子中,我只是添加了允许表单和允许脚本作为沙盒属性值,嵌入的站点不再重定向,仍然可以运行JavaScript

例:

如果有人知道使用这种方法的缺点,我很想知道


其他人也有同样的答案:我后来遇到了这个答案

iframe的用途是什么?你可以在上面放一个div?iframe的用途是什么?你可以在上面放一个div?