2012-02-22 28 views
1

我有一個用例,我正在嘗試 - 將許多不同的JS庫沙箱化爲隱藏的iframe。在該網站中,可能有很多小部件,全部來自同一個域,可能需要不同版本的js庫。爲了防止全局衝突,我認爲將所有必需的庫放入iframe會很有趣。所以在一個iframe中,我可能有jQuery 1.7.1,但在其他人可能會有更老的東西。我想要做的是讓每個iframe上運行的代碼都能夠對主窗口進行更改。我可以通過調整jQuery源文件中的「document」變量來指定「var document = top.document。在Iframe中重定向jQuery以修改父文檔

使用這種方法,我可以在iframe中執行$(」body「 ).append('test')並讓它修改父文檔。

任何人都可以提出一個更好的方法來做這樣的事情嗎?或更好的沙箱方法?

回答

0

如果你不想要編輯的jQuery的,我相信這個工程:

$(document, parent.window.document).contents().find('body').append('test'); 

通過這種方式,你可以使用jQuery的LIB從iframe內爲好,但如果你隱藏了他們無論如何,你的解決方案可能更適合你的目的。

+0

是的,這是我的想法。我寧願不修改jQuery,但我需要一個突破性的解決方案。它看起來像jQuery從window.document獲取文檔,所以包裝另一個執行設置文檔的自執行包裝將無法工作。 – zoidberg 2012-02-23 01:05:06