1

有没有办法阻止嵌入式 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/

4

3 回答 3

2

由于您的 iframe 显然由另一个域提供服务,因此无法使用标准解决方案。您无法读取或修改 iframe 或其文档

但是你可以像这样在它上面放置一个不可见的 div:http: //jsfiddle.net/dystroy/Afg3K/

<div id=a></div>

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

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

于 2012-07-09T19:45:26.550 回答
1

这是可能的,但我不建议这样做。

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

此外,正如dystroy 在他的回答中所说,在您的页面上放置 iframe 所附带的法律条件通常明确禁止这种行为。

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

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

值得一提的是,如果 iframe 与运行脚本的域不同,这将不起作用。如果是这种情况,您将需要构建一个透明的覆盖 div 来吞下点击事件并将其绝对定位在 iframe 上。

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

于 2012-07-09T19:43:12.383 回答
1

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

就我而言,我只是添加了“allow-forms”和“allow-scripts”作为沙盒属性值,并且嵌入式站点不再重定向并且仍然可以运行 JavaScript

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

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

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

于 2013-01-28T23:04:56.317 回答