我遇到了一個煩人的問題,讓我陷入了兩天的困境。
我爲框架開發了一個使用jQuery mobile的PhoneGap應用程序。我最初在Android上開發它,一切正常。
現在,它應該是跨平臺的,但是當我將它帶到iPhone上時,它不會超過啓動屏幕。我跟着幾條紅鯡魚,但最終設法在JavaScript中解決了這個問題。
這是在程序執行的早期致電$.mobile.changePage
導致問題。似乎是某種競爭條件,因爲當我註釋到有問題的代碼行時,它已經超過了啓動屏幕,然後如果我從Safari開發控制檯遠程運行語句,它就可以正常工作。爲了增加我的沮喪感,它甚至可以在iPad上的Safari瀏覽器中正常工作,但不在PhoneGap應用程序中,這更加奇怪。
我跟着一些建議使用的setTimeout作爲一種解決方法是我從一個jQuery移動GitHub的問題頁面來到這裏: https://github.com/jquery/jquery-mobile/issues/3190
這使得它的工作(謝天謝地!)。但是,我做錯了什麼?我覺得應該有更好的解決方案,而不僅僅是增加程序執行的延遲。
下面是代碼:
$(document).on('pageinit', '#home', onHomePageInit);
function onHomePageInit() {
$("#home").on("pageshow", checkTokenAndSync());
}
function checkTokenAndSync() {
// check for stored values
var storedId = window.localStorage.getItem('id');
var tokenValue = window.localStorage.getItem('token');
if(storedId == null || tokenValue == null) {
// no token value found, direct user to login screen to obtain one
// This doesn't work. Need to use setTimeout as below
// $.mobile.changePage("#loginDialog");
window.setTimeout(changeToLoginDialog, 1000);
}
}
function changeToLoginDialog() {
$.mobile.changePage("#loginDialog");
}
我要評論添加到GitHub的問題頁面。