使用html5 sandbox iframe时,我希望iframe无法更改其位置:
<iframe sandbox="allow-forms allow-popups allow-pointer-lock allow-same-origin allow-scripts" class="iframe visible" src="thesource.html" width="100%" scrolling="auto" frameborder="0"></iframe>
它在Chrome中效果很好,但是在Firefox中,沙盒iframe仍然可以重定向。
这是一个已知的错误,但是如何修补它,以使所有Firefox用户都不会重定向?
示例:
有额外限制的一个:
<iframe src="demo_iframe_sandbox.htm" sandbox=""></iframe>
Sandbox属性在Internet Explorer 10,Firefox,Chrome和Safari中支持。
注意:Internet Explorer 9和更早版本或Opera中不支持Sandbox属性。
定义和用法
如果指定为一个空字符串(Sandbox ="),则Sandbox属性对内联框架中的内容进行了一组额外的限制。
沙盒属性的值可以是一个空字符串(应用了所有限制),也可以是删除特定限制的预定值的空间分隔列表。
HTML 4.01和HTML5
之间的差异沙盒属性在html5中是新的。
语法
<iframe sandbox="value">
属性值
- " =>应用以下所有限制
- 允许same-origin =>允许将iframe内容视为与包含文档的起源相同的来源
- 允许top-navigation =>允许iframe内容从包含文档中导航(加载)内容
- 允许形式=>允许表单提交
- 允许scripts =>允许脚本执行
JavaScript:是一种怪异的URI协议。它在某些情况下工作,例如但不是全部 - 例如,窗口的位置无法设置为这样的URI。(虽然您可以将JavaScript:URI分配到窗口。Location作为运行脚本的真正回旋方式,但该窗口的位置无法保持设置为该值。)
要将内容写入iframe,请获取对框架文档的引用并写入其中。这样做将需要您设置允许式Origin沙盒标志。
<iframe id="myframe" sandbox="allow-scripts allow-same-origin" src="about:blank"></iframe>
<script>
var frame = document.getElementById("myframe");
var fdoc = frame.contentDocument;
fdoc.write("Hello world"); // or whatever
</script>
实时示例: http://jsfiddle.net/wuvrf/1/