通过Ajax调用,我得到一个内容的“blob”,我需要在iframe中注入。我无法控制内容......它可能只是HTML或HTML + JavaScript。
作为一个“模板”,我使用一个空的html文件作为我的iframe src。在iframe的“加载”事件后,我将blob推入其体内。它主要工作(使用jQuery):
$iframe.contents().find('body').html(my blob);
注入该系统的JS的“window”对象是父窗口window.top
。为什么呢?
我认为这个问题可能与jQuery html()的工作方式有关,但我无法想出一种跨浏览器的方式来使用jQuery进行相同的操作。
感谢任何帮助。
编辑:这是非常小的情况:
<iframe id="z" src="scene.html"></iframe>
<script>
var xxx = 13;
$("#z").load(function() {
var c = "<scri" + "pt>console.log(xxx)</scr" + "ipt>";
$(this).contents().find('body').append(c);
})
</script>
在控制台中我们读取“13”(并且我不访问scene.html中已存在的javascript对象)。
答案 0 :(得分:0)
将此添加到您的scene.html
:
function myAppendFunc(html) {
$('body').append(html);
}
然后从外面打电话:
$("#z").load(function() {
var c = "<scri" + "pt>console.log(xxx)</scr" + "ipt>";
this.contentWindow.myAppendFunc(c);
})
这应该有效。