1

我正在爲Android和iOS開發混合應用程序。這不是我的第一個應用程序,但我並不認爲自己是專家。目前我的目標是Android 4.4或更高版本。對於iOS我有一個iPhone 4S測試,不支持iOS 9.2以下的任何東西。爲了使這個應用程序,我目前使用Phonegap Build,它輸出版本= cli-5.2.0和使用jQuery Mobile 1.4.5作爲框架來處理用戶界面,導航等。 Javascript正在本地加載 - 來自設備。jquery移動加載器不能在android上工作

考慮到一些服務器交互需要一些時間來加載,我想在服務器交互過程中顯示加載gif。對於這個問題,我正在使用jQuery Mobile的loader小部件。對於Ajax請求調用的代碼具有下面的代碼:

$.serviceCall = function(web_method, web_root, params){ 

    var ajax_response; 
    var request_url = 'http:/some.url.com/' + web_root + '/' + web_method; 

    $.mobile.loading("show", { 
     text: "loading", 
     textVisible: false, 
     theme: "z", 
     html: "" 
    }); 

    $.ajax({ 
     type: 'get', 
     contentType: 'application/json; charset=utf-8', 
     async: false, 
     dataType: 'json', 
     url: request_url, 
     data: params, 
    }).done(function(data){ 
     ajax_response = data 
     ajax_response.callback = 'done'; 
     $.mobile.loading("hide"); 
    }).fail(function(jqXHR, textStatus, errorThrown){ 
     var failure_details = { 
      status: jqXHR.status, 
      text_status: textStatus, 
      error_thrown: errorThrown 
     }; 
     ajax_response = failure_details; 
     ajax_response.callback = 'fail'; 
    $.mobile.loading("hide"); 
    }); 

    return ajax_response; 
}; 

從桌面瀏覽器或波紋仿真器訪問來模擬實際device.Once請求開始,裝載機顯示了當這工作完全正常,如隱藏一旦請求結束並進行頁面轉換。

但是,在android上不起作用。每當請求開始時,無論請求需要多長時間,加載器都不會顯示出來。移動操作系統有什麼竅門,我需要申請才能使其工作?

+0

請在您的帖子**中回答以下問題。因爲這似乎是你在這個問題上的第一篇文章。這是你的第一個混合應用程序?你在使用桌面應用程序嗎?你的目標平臺和目標版本是什麼:Android 4,5,6? iOS 7,8,9?您是否在使用[CLI,SDK或Build](https://github.com/jessemonroy650/top-phonegap-mistakes/blob/master/new-to-Phonegap.md#001)?請不要假設答案,請閱讀鏈接。一旦你在帖子*中回答問題*,回覆評論,所以我知道你已經添加了信息到帖子。 – JesseMonroy650

+0

@ JesseMonroy650對不起,我完全失去了你的評論!我用你問的問題更新了問題信息,如果你需要任何附加信息,請告訴我,謝謝! –

+0

您使用* DESKTOP應用程序*?你使用的是什麼框架:Angular,Express,Ember? – JesseMonroy650

回答

0

檢查此guide如何檢查應用程序。

我建議您取出$.mobile.loading("hide");,這樣您可以讓加載程序運行以查看發生了什麼。可能是z-index問題或console中的錯誤

+0

所以我做了這個,我發現了兩件有趣的事情:首先,加載器在Android中出現的時間稍長一些,然後在桌面環境中出現,第二:即使沒有'$ .mobile.loading('hide')'裝載程序消失的頁面之間的轉換是在它可以顯示裝載程序之前發生的轉換?那麼如何防止呢? –

+0

@Juan Carlos Alpizar Chinchilla - 不知道爲什麼有延遲,嘗試移動Firefox瀏覽器,看看是否更快 - 你可以添加一個或兩個左右的超時隱藏加載程序 - 例如(setTimeout(function(){ $ .mobile.loading(「hide」); },2000);)所以至少你看到了它 - 不確定你有其他問題,但聽起來像瀏覽器問題,而不是JQM - 我從來沒有使用過inbuild加載程序,我不喜歡它自己,而是我用旋轉js - http://fgnass.github.io/spin.js/ – Tasos

+0

問題是加載程序一旦頁面過渡開始就消失了,我會深入研究頁面轉換事件,看看我能否更快地展示它。另一方面,我不知道旋轉,我會給它一個嘗試:) –

0

您犯了一個常見錯誤。您需要應用whitelist系統。需要截至Cordova Tools 5.0.0(2015年4月21日)。對於的PhoneGap構建,這意味着自cli-5.1.1(2015年6月16日)

添加到您的​​3210

<plugin name="cordova-plugin-whitelist"  source="npm" spec="1.1.0" /> 
<allow-navigation href="*" /> 
<allow-intent href="*" /> 
<access origin="*" /> <!-- Required for iOS9 --> 

記下您的應用現已不安全。它是由你來保護你的APP。
以下添加到您的index.html

<meta http-equiv="Content-Security-Policy" 
     content="default-src *; 
        style-src * 'self' 'unsafe-inline' 'unsafe-eval'; 
        script-src * 'self' 'unsafe-inline' 'unsafe-eval';"> 

白名單工作應該有所幫助。
HOW TO apply the Cordova/Phonegap the whitelist system

如果不是這樣,那麼可能會出現我可能不熟悉的JQuery Mobile設置。

+0

我當然有whiltelist插件工作,但我的配置現在是非常不同的,你已經建議。我會在幾個小時內查看它,因爲它現在是凌晨1點50分在這裏:p –

+1

我懷疑你的index.html中有Javascript。在這種情況下,您需要CSP(內容安全策略)。 – JesseMonroy650

相關問題