簡體   English   中英

jquery移動功能在設備准備好之前運行

[英]jquery mobile function running before the device ready

我正在使用phonegap和jQuery Mobile構建一個android應用程序。

從phonegap文檔中,需要首先觸發設備就緒功能。

我不知道為什么

$(document).on("pageshow", "#keeperList", function(){ 
listAllKeepers();
});

首先開火。

我不能發布整個代碼,因為它太多了。

 <script type="text/javascript" src="js/cordova.js"></script>
 <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
 <script type="text/javascript" src="js/jquery.mobile-1.3.1.js"></script>
 <script type="text/javascript" src="js/db.js"></script>
 <script type="text/javascript">

 var db;
 document.addEventListener("deviceready", onDeviceReady, false);

 function onDeviceReady() {
 alert("PhoneGap is ready!");
 db = window.openDatabase("rentManag", "3.7.11", "Rent Manag", 100000000);
 db.transaction(createTable, errorCB, successCB);
 }
 $(document).on('pageshow', "#keeperList", function () { 
 listAllKeepers();
 });
 </script>

如果你將phonegap與JQuery Mobile結合使用,你必須等待JQuery Mobile“pagecreate”和Phonegap“deviceready”事件。 這可確保正確加載兩個框架。 這是你如何做到的:

var jqmReady = $.Deferred();
var pgReady = $.Deferred();

// jqm ready
$(document).bind("pagecreate", jqmReady.resolve);

// phonegap ready
document.addEventListener("deviceready", pgReady.resolve, false);
$(document).on('pagecreate',function(event,data)
                 {


                 });
// all ready :)
$.when(jqmReady, pgReady).then(function () {
          listAllKeepers();
                               });

要對您的問題給出答案,請查看下面的代碼。 這是我自己使用的解決方法。 它可能不是最好的解決方案,但它可以完成工作。

它做什么: - 在設備就緒時,它將值設置為true。 - 在頁面加載時,您訪問一個等待該值為true的函數。 如果沒有,它會循環直到它。 - 這可以防止PhoneGap尚未加載任何內容的錯誤。

// device ready document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { // let the function "isDeviceReady" know that the event "deviceready" has been fired window.deviceReady = true; }

// callback function to check if device is ready function isDeviceReady(value, action) { if (window.deviceReady === true) { switch (action) { case "listAllKeepers": listAllKeepers(); break; case "listAllKeepersValue": // if you had a value listAllKeepers(value); break; } } else { window.setTimeout("isDeviceReady(\\"" + value + "\\", \\"" + action + "\\");", 100); } }

// do stuff on page show $(document).on('pagebeforeshow', '#yourpageid', function (event, data) { isDeviceReady('', listAllKeepers); });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM