iframe中包含的JS具有顶部框架窗口的上下文

时间:2011-05-03 14:12:41

标签: javascript jquery iframe dynamic-loading

$('<script/>', {
    src: '/path/to/javascript.js',
    type: 'text/javascript'
}).appendTo($('#iframe').contents().find('body'));

如果我错了,请纠正我,但我认为应该将JS加载到iframe中。我也试过追加head

问题
javascript.js已执行,但该脚本中的console.debug(this)将返回顶部框架窗口。我试图验证脚本实际上是否包含在iframe中,但实际上并不知道如何。

firebug output

此外,从$('a')运行javascript.js会返回顶部框架中的所有链接,而不是我想要的iframe中的每个链接。

谢谢你的时间!


更新:我已整理an isolated test case you also can download。检查控制台并注意这是顶部框架(可以通过变量_TOP验证)。

2 个答案:

答案 0 :(得分:1)

这是一个灰色地带。对于使用jQuery的此特定操作,您可以使用importNodeadoptNode,具体取决于浏览器。但是,IE也不支持(因为我上次研究过它)。

您可能希望获得对文档的引用,并编写脚本。如果记忆对我有用:

$('<iframe/>')[0].contentDocument.document.write('script');

答案 1 :(得分:0)

我能够在同一个域iframe更新中制作内容:
http://jsfiddle.net/maniator/DX6bg/1/

确保这两个网址位于同一个域中 (包括来自或不是www

<强>更新

你可以这样测试:

$(function(){
   var iframe = $('#iframe').contents();

   $('body', iframe).append($('<div>', {text: 'this is a test'}));
});

现在,如果您在iframe中看到文本this is a test,您知道它正在运作