有没有办法阻止嵌入式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>
答案 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(我后来遇到了这个答案)