firefox沙箱iframe位置改变的时候不应该

时间:2014-02-05 00:16:28

标签: javascript html html5 firefox iframe

使用html5沙箱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仍然可以重定向。

它是known bug,但我如何修补它以便不会重定向所有Firefox用户?

1 个答案:

答案 0 :(得分:5)

示例:

有额外限制:

<iframe src="demo_iframe_sandbox.htm" sandbox=""></iframe>

Internet Explorer 10,Firefox,Chrome和Safari支持沙箱属性。

注意:Internet Explorer 9及更早版本或Opera中不支持沙箱属性。

定义和用法

如果指定为空字符串(sandbox =“”),则沙箱属性会为内联框架中的内容启用一组额外限制。

沙箱属性的值可以是空字符串(应用所有限制),也可以是以空格分隔的预定义值列表,这些值将删除特定限制。

HTML 4.01和HTML5之间的差异

  

沙盒属性是HTML5中的新功能。

语法

<iframe sandbox="value">

属性值

  1. “”=&gt;适用以下所有限制
  2. allow-same-origin =&gt;允许将iframe内容视为与包含文档的原点相同
  3. allow-top-navigation =&gt;允许iframe内容导航(加载)包含文档的内容
  4. allow-forms =&gt;允许表单提交
  5. allow-scripts =&gt;允许脚本执行
  6. javascript:是一种奇怪的URI协议。它适用于某些上下文,但不是全部 - 例如,窗口的位置不能设置为这样的URI。 (虽然您可以将一个javascript:URI指定给window.location,作为运行脚本的一种非常迂回的方式,但窗口的位置不会保持设置为该值。)

    要将内容写入IFRAME,请获取对该框架文档的引用并写入该文档。这样做将要求您设置allow-same-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/