2010-03-07 157 views
0

我有以下内容:“IFRAME加载”如何在iframe中运行动态加载的js文件?

$(document).ready(function() { 

    var myIframe = document.getElementById('myIframe'); 
    var element = myIframe.contentDocument.createElement('script'); 
    element.setAttribute('src', '/javascripts/library/jquery/jquery.min.js'); 
    myIframe.contentWindow.document.getElementsByTagName('head')[0].appendChild(element); 

    $('#myIframe', top.document).load(function() { 
    alert('iframe has loaded'); 

    var element = document.getElementById('myIframe').contentDocument.createElement('script'); 
    element.setAttribute('src', '/javascripts/stuff.js'); 
    myIframe.contentWindow.document.getElementsByTagName('body')[0].appendChild(element); 
    }); 

}); 

我得到的警报

stuff.js包含

$('body').css('backgroundColor', 'yellow'); 

所以,我希望,当iframe中加载了iframe的背景颜色将变为黄色......但没有任何反应。我甚至尝试在$(document).ready块中环绕stuff.js中的东西,但结果相同。

如果我选择所有并查看iframe的源代码,我发现jquery.min.js和stuff.js位于iframe中。如果将此源输出放入单独的html文件并运行该文件,则文档的背景颜色会按预期更改。

一旦iframe加载,我怎样才能让我的javascript在stuff.js中运行在iframe中?

+0

您是否收到任何脚本错误?您是否在stuff.js中尝试了'alert'?你检查过Firebug吗? – SLaks 2010-03-07 03:46:02

+0

没有脚本错误,也没有提示。我从商店回来后会和Firebug一起窥探。 – 2010-03-07 03:49:01

+0

用Firebug看它时我没有看到任何奇怪的东西。 – 2010-03-07 04:33:41

回答

0

地狱是的,我想通了!

事实证明,它不工作,因为我已经将myIframe.contentDocument.designMode设置为“on”。评论说,它使它工作。希望我可以在stuff.js加载后打开它,一切都会好起来的。

1

你也可以用更多的jQuery方式来做到这一点。

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