2014-02-14 58 views
0

我正在構建基於移動Web的遊戲。我想要使​​用單頁設計,並且希望它能夠脫機運行。我想設計和存儲我將用作文件夾的不同HTML頁面,只需要將它們加載到我的div中。問題是我找不到使用網絡技術加載本地文件的方法。如何在脫機Web應用程序中本地訪問HTML文件

正常的方法是在服務器上託管文件,並通過AJAX等獲取,但我想繞過獲取時間,並允許應用程序脫機運行。

現在我正在做的是創建我的html頁面,將它們存儲爲JS文件中的字符串並使用它,但我希望有更好的解決方案。

理想情況下,我想要類似$(".mydiv").load("../html/login.html")。然而,因爲加載使用AJAX我不認爲這將工作。

編輯:我打算使用電話差距生成打包我的應用程序。

回答

0

http://sammyjs.org/是我開始使用的庫,它完美地處理了這個問題。它允許您分開HTML代碼並在需要時包含它。

1

出於安全原因,Web應用程序無權訪問本地文件。聽起來像你可能會更好地根據您的要求製作移動應用程序。 Web應用程序無法在本地運行,因爲它需要Web服務器入口點。有些方法可以使用本地存儲或cookie等在本地存儲數據,但網站無法脫機運行。

0

將所有數據保存在單個網頁中,作爲不可見的元素,然後根據需要顯示它們。 「單頁設計」被稱爲是有原因的 - 你只能得到一個頁面。但是該頁面可以是任意大的,您可以隨時修改它,並且可以顯示和隱藏適合您的部分。您也可以使用clientside templating engines中的任何一個模擬您的​​,就像您從服務器加載它一樣。

編輯:你正在全面建設的PhoneGap應用程序的事實改變的事項(本應該這麼說,從一開始):PhoneGap的作用就像一個服務器,從而構建一個多頁應用。因此,一切(包括​​should work as you expect。你不能測試你的應用程序沒有網絡服務器,因爲只是從你的硬盤上打開一個文件(即使用file:協議)不允許它,所以測試你將不得不移動到網絡服務器,但是,你的問題中的「單頁面設計」有點誤導。

+0

難道所有這些我隱藏的元素都會佔用資源嗎?我的印象是,他們是負載但不可見,所以如果有足夠的話會造成問題。如果我錯了,請糾正我。 –

+0

你沒有錯,他們確實需要資源;但是十個或一百個小部件的HTML價值並不大。如果它是你想要的數據而不是簡單的UI,那麼你應該使用一個數據庫(如果你需要更多的數據,請參閱HTML5存儲鍵/值存儲和WebSQL),但後者目前不適用於IE和Firefox) 。或者只是將其粘貼到頁面中,除非您的數據真的非常巨大。 – Amadan

+0

請記住,此應用程序適用於移動設備(手機和平板電腦),因此性能問題比桌面電腦更重要。現在我相信這個解決方案(一頁中的所有內容)就是我將要使用的,並希望在它成爲瓶頸之前找到替代方案。謝謝! –

0

我不知道我的建議是否相關,但如果你使用phonegap,你可以使用你的建立一個獨立的移動應用程序標準的網絡技術,也許你可以看看...

+0

這就是我正在做的!但它不能解決本地文件問題。我可以爲每個操作系統構建插件,以將JS函數連接到Objective-C或Java,並使用本地語言來執行文件I/O。似乎不值得,雖然 –

+0

你正在使用PhoneGap!?!添加更多信息給我的答案。 – Amadan

0

有一個簡單的方法來做到這一點和一個困難的方式......你走下艱難的道路......

我構建了一個單頁html5移動應用程序,它通過javascript控制信用卡讀卡器。讀卡器確實需要互聯網連接。其他部分很容易在離線模式下工作。

這樣做的簡單方法是藉助良好的移動框架。特別是您需要一個可以輕鬆脫機工作的框架。

由於有很多框架,選擇一個具有脫機組件。我使用的框架是Dhtmlx Touch http://dhtmlx.com/touch。選擇一個框架,從json字符串中創建100%的頁面 - 不是div。然後它很容易,你可以將頁面作爲json對象存儲在瀏覽器的本地存儲中。

因此您有1個html5頁面...一個好的javascript框架......和本地存儲。

DHTMLX Touch具備內置的框架離線組件:http://docs.dhtmlx.com/touch/doku.php?id=how_to_create_offline_apps

有了合適的工具,這一切都非常簡單....和它正常工作與PhoneGap的或本地網頁視圖。

相關問題