2012-10-16 44 views
4

我有一個基於Twitter Bootstrap的網站。隨着一些額外的改進,它在手機和平​​板電腦上運行良好但我想要一個真正的應用程序,並且不想複製所有內容。開始,僅適用於Android。在線網站使用phonegap代碼

我嘗試過的第一件事是AppsGeyser,很簡單,但不是我想要的。如果用戶沒有互聯網連接,我會看到那些醜陋的瀏覽器消息。如果用戶按手機上的菜單按鈕,我想從Twitter Bootstrap的「菜單欄」切換菜單。所以AppsGeyser不是我想要的。並沒有iOS的支持。

接下來我嘗試了很多PhoneGap,太棒了!我想要的全部都是可能的,但最好的解決方案是什麼?我想要的是跟隨我的意見:

  • 如果應用程序啓動它檢查互聯網連接,沒有連接?從緩存中加載。否則只顯示該網站。 HTML5緩存清單最佳選擇?玩過它,但我只想從緩存中加載,如果沒有互聯網連接。到目前爲止,它看起來像這是不可能的..?
  • 如果某些表單會再次提交,請檢查是否有互聯網連接,無互聯網連接?只是一個警告:「沒有互聯網連接!」並且不要這樣提交,表單仍然填充,就像用戶剛剛做的那樣。點擊/提交=> ajax調用網站=>失敗? => show alert =>返回false,所以表單不會被提交。最好的選擇?
  • 我想要的最後一件事,就像我之前說的那樣,當用戶按下手機上的菜單按鈕時,它會從Twitter Bootstrap切換「菜單欄」。

所以前兩件事不是我想的問題,但是最後一件事......? 我找到了這個:http://docs.phonegap.com/en/1.0.0/phonegap_events_events.md.html#menubutton 沒有什麼大不了,如果網站是「在應用程序」,但我不希望網站「在應用程序」。只需從互聯網加載它(或者如果沒有互聯網連接,則緩存),所以如果我改變了一些東西,我不必更改網站和應用程序。只是網站!但是可以在「遠程」網站上使用Cordova嗎?如果網站通過PhoneGap運行應用程序,它將運行並運行!

一樣,如果我把這個代碼在我的網站:

document.addEventListener("menubutton", onMenuKeyDown, false); 

function onMenuKeyDown() { 
    alert('Menu button pressed!'); 
} 

,包括科爾多瓦js文件它不會做普通觀衆什麼,但如果使用的應用程序和網站加載從PhoneGap應用程序與webview它的作品?

請您對此意見全!

謝謝!

回答

4

對我而言,PhoneGap中的教科書方法是將應用程序編寫爲一個獨立的JavaScript/HTML/CSS應用程序,它可以坐在設備上並從服務器端Web服務中檢索數據。這需要通力合作,並且通常對傳統的服務器端Web應用程序進行逆向工程(這似乎是您所描述的)並不是特別容易。此模型爲您提供出色的性能,並讓您在不發佈更新的情況下更新應用程序內容。

我認爲您最好的選擇是將您的應用程序的表示層重寫爲由您的後端派生的API驅動的JavaScript應用程序。如果你與其他本地應用競爭,這應該會給你非常出色的性能,這非常重要。此外,如果你正確地構建它,它會給你離線功能和更多(緩存,日誌記錄等)。

快速的方法(但可能不是我推薦的方法之一)就是隻在設備上打包主頁(HTML/JS/CSS),然後像往常一樣鏈接到您的web內容。這不是我以前用過的方法,但應該工作得很好。如果您希望構建離線功能,將此方法與jQuery Mobile之類的工具包結合使用應該很好(jQM不會爲每個sae提供離線功能,但應爲您創建自己的離線處理提供適當的基礎)。

我希望這有助於!

+0

當你說「那麼就像往常一樣鏈接到你的網頁內容」將是'通常的方式'? – arod

+0

那麼,你的index.html(嵌入在應用程序中)可以鏈接到帶有超鏈接的外部網頁內容。外部內容只會顯示在應用程序內,而用戶並不聰明。希望這是有道理的。 – Harry