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

Tom*_*Tom 8 html javascript iframe firefox html5

使用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>
Run Code Online (Sandbox Code Playgroud)

它在Chrome中运行良好,但在Firefox中,沙盒iframe仍然可以重定向.

这是一个已知的错误,但我如何修补它,以便所有Firefox用户都不会被重定向?

eve*_*een 5

例:

有额外限制:

<iframe src="demo_iframe_sandbox.htm" sandbox=""></iframe>
Run Code Online (Sandbox Code Playgroud)

Internet Explorer 10,Firefox,Chrome和Safari支持sandbox属性.

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

定义和用法

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

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

HTML 4.01和HTML5之间的差异

sandbox属性是HTML5中的新增属性.

句法

<iframe sandbox="value">
Run Code Online (Sandbox Code Playgroud)

属性值

  1. ""=>适用以下所有限制
  2. allow-same-origin =>允许将iframe内容视为与包含文档的原点相同
  3. allow-top-navigation =>允许iframe内容从包含文档中导航(加载)内容
  4. allow-forms =>允许表单提交
  5. allow-scripts =>允许脚本执行

javascript:是一种奇怪的URI协议.它适用于某些上下文,但不是全部 - 例如,窗口的位置不能设置为这样的URI.(虽然您可以将一个javascript:URI指定给window.location作为运行脚本的一种非常迂回的方式,但窗口的位置不会保持设置为该值.)

要将内容写入IFRAME,请获取对该框架文档的引用并写入该文档.这样做将要求您设置allow-same-origin沙箱标志.

<iframe id="myframe" sandbox="allow-scripts allow-same-origin" src="about:blank"></iframe>
Run Code Online (Sandbox Code Playgroud)
<script>
    var frame = document.getElementById("myframe");
    var fdoc = frame.contentDocument;

    fdoc.write("Hello world"); // or whatever
</script>
Run Code Online (Sandbox Code Playgroud)

实例: http ://jsfiddle.net/wUvrF/1/