我有一個web應用程序,有幾個iframe都需要導入相同的JavaScript庫(例如jquery)。可能通過iframe共享javascript導入?
有沒有辦法只加載一次,並以某種方式在所有iframe中共享數據?我寧願不加載我的頁面,因爲它爲每個iframe加載一次相同的JS文件。
謝謝!
編輯:人們都在說,你不能從一個iframe共享數據,但如果JS的進口都在一個命名空間中說,名稱空間,然後在iframe確實像 NAMESPACE = parent.NAMESPACE
我有一個web應用程序,有幾個iframe都需要導入相同的JavaScript庫(例如jquery)。可能通過iframe共享javascript導入?
有沒有辦法只加載一次,並以某種方式在所有iframe中共享數據?我寧願不加載我的頁面,因爲它爲每個iframe加載一次相同的JS文件。
謝謝!
編輯:人們都在說,你不能從一個iframe共享數據,但如果JS的進口都在一個命名空間中說,名稱空間,然後在iframe確實像 NAMESPACE = parent.NAMESPACE
假設您的src
具有相同的URI,並且您擁有理智的緩存控制標頭,那麼JS將被緩存並且不會爲每個幀重新下載。這就是說,如果你真的想,你可以將它加載到頂部框架中,然後通過parent
對象訪問所有內容。
如果所有的幀是加載同一個js文件,現代的瀏覽器(Chrome瀏覽器,火狐,IE)應該簡單地加載從緩存相同的文件...所以你不必重複加載同一個文件。如果你的頁面加載時間很長,考慮縮小你的javascript(通過使用另一個程序讓你的js文件變小)...這可以大大減少加載時間。
謝謝,這就是我需要知道 – asutherland 2012-07-05 16:36:04
實際上請看我編輯後續問題。 – asutherland 2012-07-05 16:55:53
我閱讀您的更新。我不會像那樣更新命名空間。我只會依靠瀏覽器來緩存這些文件。你也應該考慮使用requirejs之類的東西,這樣你的模塊只能被加載一次。 如果你覺得它有用,請投票表決和/或標記答案。 – vinnybad 2012-08-08 15:07:57
iframes是獨立的頁面,它們不能「共享」數據,而不是瀏覽器緩存。所以它應該緩存它,除非你使用時間戳的QueryStrings。 – TheZ 2012-07-05 16:23:16
以及文件將在緩存[如果標頭設置正確],所以這不是緩慢的問題。將它讀入內存可能需要一些時間,但在現代瀏覽器中這不是問題。 – epascarello 2012-07-05 16:23:56