Firefox 沙盒 iframe 位置在不应该更改时更改



使用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">

属性值

  1. " =>应用以下所有限制
  2. 允许same-origin =>允许将iframe内容视为与包含文档的起源相同的来源
  3. 允许top-navigation =>允许iframe内容从包含文档中导航(加载)内容
  4. 允许形式=>允许表单提交
  5. 允许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/

最新更新