Jquery mobile Phonegap Cordova不会启动JQM pageinit

Jquery mobile Phonegap Cordova不会启动JQM pageinit,jquery-mobile,cordova,page-init,Jquery Mobile,Cordova,Page Init,我在这个问题上做了很多研究,但没有找到合适的答案。 我的问题是,当我将Cordova/Phonegap与JQM一起使用时,会触发$(document).ready,但不会触发$(document).on('pageinit'),建议与JQM一起使用 var deviceradydeferred=$.Deferred(); var jqmReadyFerred=$.Deferred(); 文件。添加的监听器(“DeviceRady”,DeviceRady,false); 函数devicerady

我在这个问题上做了很多研究,但没有找到合适的答案。 我的问题是,当我将Cordova/Phonegap与JQM一起使用时,会触发
$(document).ready
,但不会触发
$(document).on('pageinit')
,建议与JQM一起使用


var deviceradydeferred=$.Deferred();
var jqmReadyFerred=$.Deferred();
文件。添加的监听器(“DeviceRady”,DeviceRady,false);
函数devicerady(){
DeviceReadyFerred.resolve();
}
$(文档).on(“mobileinit”,函数(){
JQMReadyFerred.resolve();
});
$.when(DeviceReadyFerred,JQMReadyFerred)。然后(doWhenBothFrameworksLoaded);
函数dowhenbothframewloaded(){
console.log(“设备就绪”);
$(document).on(“pageinit”,function(){
console.log(“文档pageinit被激发”);
}
}
此页面托管在远程服务器上。在这种情况下,控制台中会显示设备就绪,但不会触发文档pageinit。如果我替换
$(文档)。在(“pageinit”,function(){
上显示
$(文档)。就绪(function(){
),两个日志都会显示,但我不喜欢此解决方案

你能告诉我哪里出错了吗


事先谢谢。

我忘了解释我使用了多页范例,这要归功于data role=page。然后,您的代码会直接显示所有页面。我在这个线程中发现,我可以将$(document).on('pageinit')放在后面。这实际上是可行的,但一些对多个页面通用的函数仍然没有定义(例如,使用turnPage和turnPageBack函数在页面之间滑动)。是否打算在deviceReady函数中删除DeviceReadedFerred.resolve();我还尝试使用.delegate方法而不是.on,但没有成功
try this sequence of code in script tag.

/* Initialization of PhoneGap and jQM */

var deviceReadyDeferred = $.Deferred();
var jqmReadyDeferred = $.Deferred();


//initialize PhoneGap
document.addEventListener("deviceReady", deviceReady, false);
function deviceReady() {

}

//initialize jQM
$(document).on("mobileinit", function () {
  //hack to fix android page transition flicking issue
  if (navigator.userAgent.indexOf("Android") != -1){
      $.extend(  $.mobile , {
          defaultPageTransition: 'none'
      });   
    } 

  setCustomThemeAndOptions();

  jqmReadyDeferred.resolve();
});


//When both PhoneGap and jQM are ready, initialize language setting
$.when(deviceReadyDeferred, jqmReadyDeferred).then(function(){  
  deviceDeferred = true;
});