2011-03-10 41 views
14

我開始考慮HTML5s允許離線Web應用程序的功能。有沒有辦法使用CDN(用於jQuery)並且有一個離線的Web應用程序(通過HTML5清單)?

後來我發現使用CDN對我的應用程序運行良好,所以我一直堅持使用它們,主要是針對jQuery。

但是,看起來清單文件不允許緩存跨域資源。

在這一點上,我一直在使用相關的Dive Into HTML5 tutorial所描述的全部清單。我的jQuery被拉入類似於HTML5 Boilerplate中定義的內容。

我希望能夠繼續從CDN爲在線用戶提供jQuery,但可能有本地副本緩存以供離線訪問。

是否值得嘗試追求這條路線,還是應該切換到僅從我的網站爲所有請求提供jQuery服務?

謝謝。

+0

如果其中一個答案回答你的問題,你應該接受它。 – gabe 2016-07-26 19:04:57

回答

0

經過幾個星期的思考,我終於有了一個想法,而今晚駕車回家。

可以檢查瀏覽器是否具有脫機支持。然後,您可以有一個區域來詢問用戶是否希望爲應用程序啓用脫機支持。如果他們這樣做,你可以加載你本地的jQuery副本。如果不支持,或者脫機支持不可用,那麼您只需從CDN引用jQuery。

或者它可能是應用程序中的單獨頁面。如果他們訪問它,它只是有一個腳本元素,它會提取本地jQuery文件。然後,頁面可以返回一個,或者窗口關閉,具體取決於應用程序。 (我認爲添加您的本地副本jQuery不會在主頁上工作,除非您從現有頁面中刪除jQuery(覆蓋變量或其他方式?)。)

取決於瀏覽器如何決定抓住脫機內容(文件),如果本地jQuery文件只加載到一個頁面上,則很可能存在問題。直到用戶離線時,當然,在這個時候它被調用(可能)在每個頁面上。

3

如果網上jQuery的存在,如果不從本地加載在這裏回答檢查的路徑: How to load local script files as fallback in cases where CDN are blocked/unavailable?

那裏有一個討論和幾個不同的方法

我個人喜歡html5boilerplate方法:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script> 
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script> 

您可以檢查瀏覽器是否支持與近代化離線緩存 http://www.modernizr.com/ 的近代化2.0版本支持有條件的加載,所以你可以用它來檢測並加載與下面的腳本所需的資源(從diveintohtml5拍攝):

if (Modernizr.applicationcache) { 
    // window.applicationCache is available! 
} else { 
    // no native support for offline :(
    // maybe try Gears or another third-party solution 
} 

,但正如我之前所說的,我更喜歡html5boilerplate方法

6

其實,你可以編寫你的清單,它有一個鏈接到你的jQuery CDN。就像我app.manifest

CACHE MANIFEST 
# 2012-01-20:v4 

http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js 

即HTML代碼段:

<html manifest="app.manifest"> 
<head> 
    .... 
</head> 
<body> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    .... 
</body> 
</html> 

它可以給我。

+2

這也適用於我,卡在一個css文件導入字體的一點點,但將字體添加到清單解決了這個問題! – mattdlockyer 2013-03-20 22:18:50

+1

它不適合我。 – 2016-05-05 11:20:33

+0

挑剔的位,但是,當然,

  • 11. 有沒有辦法通過openURL從另一個應用程序開始環聊:在Google+ Google+應用上使用?
  • 12. 有沒有辦法在我的應用程序中使用mstest
  • 13. 有沒有辦法啓動一個Express應用程序?
  • 14. 有沒有辦法在多線程應用程序中安全地使用errno?
  • 15. 如果(Internet ==不可用)在HTML5應用程序清單離線應用程序
  • 16. Qooxdoo - 有沒有辦法通過鍵刪除離線商店?
  • 17. 有沒有辦法允許Delphi應用程序使用Hazelcast?
  • 18. 有沒有辦法通過線程名稱查詢C#應用程序內的正在運行的線程?
  • 19. 有沒有辦法在Windows 10通用應用程序中使用restsharp?
  • 20. 有沒有辦法強制應用程序作爲單線程運行?
  • 21. html5 web應用程序清單樣板?
  • 22. Python的 - 有沒有辦法通過一個線
  • 23. HP TouchPad是否支持HTML5的離線應用程序(清單)
  • 24. 有沒有辦法讓一個多客戶端服務器應用程序不使用多個線程?
  • 25. 有沒有辦法使用jQuery
  • 26. 有沒有辦法使ToEnum通用
  • 27. Ruby On Rails html5存儲離線CRUD應用程序有或沒有ActiveScaffold
  • 28. 有沒有辦法通過API截斷getstream應用程序的數據?
  • 29. 有沒有辦法在多個線程中使用asyncio.Queue?