我正在尝试通过创建一个iframe并使用javascript或vbscript动态构建iframe内容来构建一个在Internet explorer中使用的测试页面。我通常使用data: URI,但IE阻止了这一点。
举例说明。
<iframe sandbox="allow-scripts" src="javascript:document.write('test')"></iframe>IE似乎是唯一一个不允许我通过javascript:function() src构建iframe内容的浏览器,即使设置了allow-scripts沙箱属性。我不想在iframe和父窗口之间传递任何信息,也不想设置allow- am since设置,因为这几乎违背了创建沙盒iframe的目的。
除了src中的javascript或data: URI之外,是否还有其他方法可以动态构建iframe内容,或者通过父窗口中的javascript,因为由于同源限制,它不能与沙盒iframe一起工作?我也不想从外部页面设置内容。
发布于 2014-02-06 04:44:16
javascript:是一种奇怪的URI协议。它适用于某些环境,如<a href>,但不是所有环境-例如,窗口的位置不能设置为这样的URI。(虽然您可以将javascript: URI分配给window.location作为一种非常间接的运行脚本的方式,但是窗口的位置不会一直设置为该值。)
要将内容写入IFRAME,请获取对框架文档的引用并将其写入。这样做将要求您设置allow-same-origin沙箱标志。
<iframe id="myframe" sandbox="allow-scripts allow-same-origin" src="about:blank"></iframe>
var frame = document.getElementById("myframe");
var fdoc = frame.contentDocument;
fdoc.write("Hello world"); // or whatever现场示例:http://jsfiddle.net/wUvrF/1/
发布于 2014-02-06 08:11:07
HTML5为此定义了"srcdoc“属性
<iframe seamless sandbox srcdoc="<p>Yeah, you can see it <a href="/gallery?mode=cover&amp;page=1">in my gallery</a>."></iframe>https://stackoverflow.com/questions/21587846
复制相似问题