2012-05-02 56 views
1

我嵌入在網頁中的iframe,我想在這個框架jQuery的注入。如何從父級iframe注入Jquery對象到嵌入式iframe?

我想是這樣的:

frame.contentWindow.$ = window.$ 

在這個作品中,iframe的$仍然運行在父母的範圍,而不是自己獨立的副本。

有一種方法來注入獨立jquery對象到的IFRAME不注入在框架中的<script src="/path/to/jquery.js"></script>

UPDATE

解決它。該jquery.js和方便地定義的jQuery的範圍由接受一個匿名函數窗口對象:

function(windowObject){ .... define jquery }(window) 

因此,所有我所要做的就是來命名這種功能,例如j爲父窗口對象然後爲子窗口對象定義並調用一次。

jQuerify = function(windowObject){ .... define jquery } 
jQuerify(window) 
jQuerify(iframe.contentWindow) 
+1

爲什麼不直接注入腳本標記?它將從緩存中加載。您需要在加載時從頭開始全新運行,以便在新的上下文中重新初始化自身。 – jfriend00

+0

你也可以看看http://api.jquery.com/jQuery.sub/。要知道,'.sub(基)'是因爲1.7.0 – jAndy

+0

@ jfriend00我爲我的jQuery有很多其他庫的插件。該文件超級重。我不希望iframe處理所有的JavaScript。 –

回答

0

解決它。 jquery.js通過接受匿名函數中的窗口對象方便地定義jQuery:

function(windowObject){.... define jquery}(window) 所以我只需要命名功能,例如j爲父窗口對象然後爲子窗口對象定義並調用一次。

jQuerify = function(windowObject){ .... define jquery } 
jQuerify(window) 
jQuerify(iframe.contentWindow) 
0

您可以嘗試克隆jQuery對象:

See this answerthis one如何實現.clone函數,然後調用這個:

iframe.contentWindow.$ = window.$.clone(); 

iframe.contentWindow.$ = window.$.bind({}); 

取決於你如何選擇克隆功能。

+0

謝謝傑夫。不幸的是,克隆不會改變範圍。儘管我找到了解決方案。 –