停止重定向嵌入的iframe
Stop an embedded iframe from redirecting
有没有办法阻止嵌入的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/
由于您的iframe显然由另一个域提供服务,因此不能使用标准解决方案。您无法读取或修改iframe及其文档。
但是您可以在上面放置一个不可见的div,如下所示:http://jsfiddle.net/dystroy/Afg3K/
<div id=a></div>
#a{
position:fixed;
top:0;
left:0;
width:224px;
height:429px;
}
但大多数时候,iframe包含合同都禁止这些事情。在执行之前先查看您的协议。
这是可能的,尽管我不建议这样做。
与默认浏览器行为(如锚标记点击)相冲突通常会让用户感到沮丧,并阻止他们返回到您的页面。
此外,正如dystroy在回答中所说,在你的页面上删除iframe所附带的法律条件通常明确禁止这种行为。
也就是说,从事件处理程序返回false
将阻止浏览器接收事件:
document.getElementById('yourFrame').contentWindow.document.body.onclick = function () {
return false;
};
值得一提的是,如果iframe所在的域与脚本运行的域不同,那么这将不起作用。如果是这样的话,您将需要构建一个透明的覆盖div,该div可以吞下点击事件,并将其绝对放置在iframe上。
这是一把小提琴,展示了这两种方法:http://jsfiddle.net/qX4fu/1/
如果你正在使用HTML5,我建议你使用新的"沙盒"属性,但它还不能与所有浏览器兼容。http://www.w3schools.com/tags/att_iframe_sandbox.asp
在我的案例中,我只是添加了"允许表单"answers"允许脚本"作为沙箱属性值,嵌入的网站不再重定向,仍然可以运行JavaScript
例如:<iframe sandbox="allow-forms allow-scripts" ... /></iframe>
如果有人知道使用这种方法的任何缺点,我很想知道。
其他有相同答案的人:https://stackoverflow.com/a/9880360/1404129(我后来遇到了这个答案)
- 重定向iFrame中的父URL
- 如果页面为iframe,则重定向
- 附加'沙箱'属性设置为动态创建的iframe以停止重定向
- Iframe提交并将用户重定向回原始页面,但Iframe似乎仍然存在
- 读取iframe重定向(同一域)
- 移动设备上的 iFrame 重定向主页问题
- 从外部 iFrame 重定向和链接中删除历史记录
- 使用 javascript 从 MVC Action 通过 iFrame 重定向到父级
- 窗口位置 阻止 iframe 重定向父窗口
- iframe重定向之前的触发器函数
- Adblock正在阻止iframe重定向-如何检测
- 禁用iframe重定向,但显示页面
- 发布后从iframe重定向到wall
- Iframe重定向顶部框架导航到Iframe
- 多个iFrame重定向工作,但考虑PHP的安全性
- 在ASP之后从iframe重定向到父窗口的新页面.净回发
- 防止iframe重定向父页面
- 如何从iframe重定向到另一个url,并在iframe的父节点上打开它
- 即使在iframe重定向到不同的url之后,也要继续将元素写入iframe
- 窗体post在iframe重定向父到post URL