2012-09-11 38 views
1

我正在開發使用jQuery mobile和PhoneGap(1.9.0)的windows mobile 7應用程序。我在應用程序中有多個html頁面,所有頁面中的數據都通過JSON解析進行加載,並需要存儲一些數據。所以我使用localStorage進行數據存儲(因爲windows瀏覽器通過phonegap不支持數據庫)。而在Windows瀏覽器中,本地存儲只能使用phonegap的deviceready事件。

document.addEventListener("deviceready", mymethod, false); 

function mymethod(){ 

} 

每件事情都正常工作,除了當我在頁面之間導航白色屏幕先來,然後新的一頁會來。看起來不好。

我用window.location.href='page2.html';(每個方法工作正常,但延遲的頁面之間進行導航)

屏幕之間進行導航。

但是當我使用

$.mobile.changePage("page2.html"); 

然後白屏會消失,但我deviceready方法將無法正常工作和黑屏的一些靜態數據(頁眉和頁腳)會來。請告訴我我錯在哪裏。我應該如何使用$.mobile.changePage("page2.html");,在下一頁中,我的頁面是從本地存儲或json解析中加載的內容。或使用window.location.href='page2.html';,但沒有白色華麗的屏幕。

我希望你們都明白我的問題。
有沒有解決這個問題的方法。

+0

@jer - 有相當多了很多本來可以編輯...如果你已經修改帖子確保你處理所有的問題... – Lix

回答

1

您應該使用$.mobile.changePage("page2.html");,以便jqm將使用Ajax加載此頁面(並且可以進行良好的轉換)。當您停留在頁面中時,不會再有一個設備準備事件,但是當頁面顯示時您可以捕獲pageshow事件。

(從文檔:http://jquerymobile.com/demos/1.1.1/docs/api/events.html

$('div').live('pageshow',function(event, ui){ 
    alert('This page was just hidden: '+ ui.prevPage); 
}); 
+0

但是我的JSON請求和localStorage呢?在Windows Phone中,localStorage只能在已準備好的事件中使用。 – theLazyFinder

+0

我試過了,但我的動態數據沒有加載。只顯示靜態頁眉和頁腳。 – theLazyFinder

+0

因此,如果您可以在deviceReady事件中獲得對localStorage的有效引用,是否可以將其分配給稍後可以訪問的(全局)變量?我不能相信你只能用它白色deviceready事件處於活動... – ivy