停止重定向的嵌入式iframe

时间:2012-07-09 19:38:02

标签: 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>

http://jsfiddle.net/qX4fu/

3 个答案:

答案 0 :(得分:2)

由于您的iframe显然是由其他域提供的,因此无法使用标准解决方案。 You can't read or modify the iframe nor its document

但是你可以像这样放一个看不见的div:http://jsfiddle.net/dystroy/Afg3K/

<div id=a></div>

#a{
    position:fixed;
    top:0;
    left:0;
    width:224px;
    height:429px;
}​

但大多数情况下,iframe包含合同禁止这些内容。在你这样做之前先看看你的协议。

答案 1 :(得分:1)

有可能,虽然我不推荐它。

使用默认浏览器行为(例如锚标记点击)进行混乱通常会使用户感到沮丧并阻止他们返回到您的网页。

此外,正如他的回答中所说的那样,在页面上删除iframe的法律字符串通常明确禁止这种行为。

话虽如此,从事件处理程序返回false将阻止浏览器接收事件:

document.getElementById('yourFrame').contentWindow.document.body.onclick = function () { 
    return false; 
};

值得一提的是,如果iframe位于与运行脚本不同的域中,则无法使用。如果是这种情况,您将需要构建一个透明的叠加div,它会吞下点击事件并将其绝对放在iframe上。

这是展示两种方法的小提琴:http://jsfiddle.net/qX4fu/1/

答案 2 :(得分:1)

如果您使用的是HTML5,我建议您使用新的“沙盒”属性,但它还不兼容所有浏览器。 http://www.w3schools.com/tags/att_iframe_sandbox.asp

在我的情况下,我刚刚添加了“allow-forms”和“allow-scripts”作为沙盒属性值,嵌入式网站不再重定向,仍然可以运行JavaScript

ex:<iframe sandbox="allow-forms allow-scripts" ... /></iframe>

如果有人知道使用这种方法的任何缺点,我很乐意了解它。

其他人有相同答案:https://stackoverflow.com/a/9880360/1404129(我后来遇到了这个答案)