2010-03-07 48 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'));