iframe里阻止_blank弹出新窗口的方法
近弄个东西,需要用到iframe,但是加载的网页中有_blank,不能让他跳出来。
如果想让目的网址的_blank删除,这是不可能的。
网上找了很多的资料,要么是跨域不能修改.要么就根本牛头不对马嘴
后来,看到了html5里iframe有个叫sandbox的属性把 iframe 里的网页给关笼子里的属性
所以,就来找找这个的用法.
<iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms"
src="https://www.qwbm.com"
style="border: 0; width:130px; height:20px;"></iframe>
我们在上面的示例中看到了一些可能的沙盒标志,现在让我们更详细地研究一下该属性的内部工作原理。
给定具有空沙盒属性 ( <iframe sandbox src="..."> </iframe>) 的 iframe,框架文档将被完全沙盒化,并受到以下限制:
JavaScript 不会在框架文档中执行。这不仅包括通过脚本标签显式加载的 JavaScript,还包括内联事件处理程序和 javascript: URL。这也意味着将显示 noscript 标签中包含的内容,就像用户自己禁用了脚本一样。
加框的文档被加载到一个唯一的原点,这意味着所有的同源检查都将失败;独特的起源与其他起源不匹配,甚至它们自己也不匹配。除其他影响外,这意味着文档无法访问存储在任何来源的 cookie 或任何其他存储机制(DOM 存储、索引数据库等)中的数据。
框架文档无法创建新窗口或对话框(例如,通过window.open或 target="_blank")。
无法提交表格。
插件不会加载。
框架文档只能导航自己,不能导航其顶级父级。设置window.top.location会抛出异常,点击链接 target="_top"无效。
自动触发的功能(自动聚焦的表单元素、自动播放视频等)被阻止。
无法获得指针锁。
框架文档包含的seamless属性被忽略。iframes
这是非常严格的,加载到完全沙盒中的文档iframe 确实构成的风险很小。当然,它也没有多大价值:对于一些静态内容,您可能可以使用完整的沙盒来摆脱困境,但大多数时候您会希望稍微放松一下。
除了插件之外,这些限制中的每一个都可以通过在沙箱属性的值中添加一个标志来解除。沙盒文档永远不能运行插件,因为插件是未沙盒的本机代码,但其他一切都是公平的游戏:
allow-forms允许表单提交。
allow-popups允许弹出窗口(window.open()、showModalDialog()、target=”_blank”等)。
allow-pointer-lock允许(惊喜!)指针锁定。
allow-same-origin允许文件保持其来源;从中加载的页面https://example.com/将保留对该来源数据的访问权限。
allow-scripts允许 JavaScript 执行,也允许特性自动触发(因为通过 JavaScript 实现它们很简单)。
allow-top-navigation允许文档通过导航顶级窗口跳出框架。
考虑到这些,我们可以准确评估为什么我们最终会在上面的 Twitter 示例中使用特定的沙盒标志集:
allow-scripts是必需的,因为加载到框架中的页面会运行一些 JavaScript 来处理用户交互。
allow-popups是必需的,因为该按钮会在新窗口中弹出一个推文表单。
allow-forms是必需的,因为推特表单应该是可提交的。
allow-same-origin是必要的,否则 twitter.com 的 cookie 将无法访问,并且用户无法登录以发布表单。
需要注意的重要一点是,应用于框架的沙盒标志也适用于在沙盒中创建的任何窗口或框架。这意味着我们必须添加allow-forms到框架的沙箱中,即使表单只存在于框架弹出的窗口中。
使用该sandbox属性后,小部件仅获得它所需的权限,并且插件、顶部导航和指针锁定等功能仍然被阻止。我们降低了嵌入小部件的风险,没有任何不良影响。这对所有相关人员来说都是一场胜利。
参考网址:https://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/
- 相关阅读
- IE6.0, IE7.0和FireFox浏览器css样式兼容
- 万家乐
- 深山留言板V2.1 Build 090620
- IIS上传文件大小解处限制的方法
- 深山行者留言系统V3.3发布
- 解决国内 github.com 打不开的准确方法
- 用javascript美化Select,并获取相应的值
- jquery获得当前所有input表单数据并进行序列化的各种问题与解决方案serialize与serializeArray的区别分析
- 共有0条关于《iframe里阻止_blank弹出新窗口的方法》的评论
- 发表评论
您发布的评论即表示同意遵守以下条款:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家、社会、集体和公民的合法权益;
二、不得发布国家法律、法规明令禁止的内容;互相尊重,对自己在本站的言论和行为负责;
三、本站对您所发布内容拥有处置权。
- 更多>>同类信息
- dw里面查找替换使用正则删除sqlserver里面的CONSTRAINT
- javascript获取浏览器指纹可以用来做投票
- 火狐Mozilla Firefox出现:无法载入您的Firefox配置文件 它可能已经丢失 或是无法访问 问题解决集合处理办法
- DW设置之后更好用 DreamweaverCS编辑GB2312与UTF-8文件在代码视图中点击鼠标错位问题的解决办法
- js指定日期加n天加n月加n年
- jquery中动态生成的代码使用on hover事件时不出现效果
- 更多>>最新添加文章
- dw里面查找替换使用正则删除sqlserver里面的CONSTRAINT
- Android移动端自动化测试:使用UIAutomatorViewer与Selenium定位元素
- 抖音直播音挂载小雪花 懂车帝小程序
- javascript获取浏览器指纹可以用来做投票
- 火狐Mozilla Firefox出现:无法载入您的Firefox配置文件 它可能已经丢失 或是无法访问 问题解决集合处理办法
- 在Android、iOS、Windows、MacOS中微信小程序的文件存放路径
- python通过代码修改pip下载源让下载库飞起
- python里面requests.post返回的res.text还有其它的吗