1. 这是什么问题?
现代浏览器(使用当前版本的 Chrome 和 Safari 测试),在 HTML5 规范中为 iFrame 元素添加的 sandbox
属性,如果未设置 allow-top-navigation
标志,即使标志 allow-forms
和 allow-scripts
存在,也会将任何突破/破坏/禁止框架的方法变成无效。
2. 我尝试过什么?
各种 JavaScript 方法,如
if(top != self) top.location.replace(location);
触发带有
target="_top"
属性的表单提交事件触发带有
target="_top"
属性的锚点元素的单击事件。实际上,带有target="_top"
属性的锚点元素变得无用。因此,向用户发出通知并建议他们采取行动也不起作用(如在此 Flickr iFrame 示例中所示)。
3. 我想要实现什么?
我想要一种在使用了标志 allow-forms
和 allow-scripts
的 iFrames 中跳出框架的方法。
看来他们只是将这个属性的遗漏之处提供给所有黑客的拼图游戏的缺失部分。
4. 我不需要的解决方案?
我正在寻找一种可以打破框架的解决方案,而不是一种不显示网站内部页面的解决方案(例如使用X-Frame-Options
响应头)或使用 CSS 隐藏页面主体等。