【问题标题】:JQuery Mobile + Phonegap: page is shown before device readyJQuery Mobile + Phonegap:页面在设备准备好之前显示
【发布时间】:2012-04-19 09:10:53
【问题描述】:

我正在开发一个带有 phonegap 的 iOS 应用程序。我遇到了一个问题。似乎在触发页面(和其他 AJAX 函数)之后触发了事件设备就绪。

示例代码:

Global.init = function() {alert("ready");}
$(function(){
    document.addEventListener("deviceready", Global.init, false);
});
$('#landing').live('pageshow', function(){alert('pageshow')});

我会在警报“准备就绪”之前看到警报“pageshow”(几秒钟)。是否有办法确保所有 JQuery 移动代码在设备准备就绪后执行?

【问题讨论】:

标签: jquery mobile cordova


【解决方案1】:

一旦在 deviceready 事件处理程序中委托了“pageshow”功能,您必须触发“pageshow”事件:

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

function onDeviceReady() {
    $("#details_page").on("pageshow", function() {
        console.log("Hello world!");
    });
    $("#details_page").trigger("pageshow");
}

【讨论】:

    【解决方案2】:

    here的回答

    请注意,您只能在触发 deviceready 事件后运行代码。

    所以对于设备就绪事件,它会是这样的:

    document.addEventListener("deviceready", onDeviceReady, false);
    
    function onDeviceReady() {
        $(document).delegate("#details_page", "pageshow", function() {
            console.log("Hello world!");
        });
    }
    

    请注意,如果 #detalis_page 是要加载的第一个页面,则不会调用第一个“pageshow”,因为它在设备准备好之前出现,请将您的初始代码放在 onDeviceReady() 函数中,并为每个 pageshow 重复代码进入委托函数。

    【讨论】:

      猜你喜欢
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 2019-05-25
      相关资源
      最近更新 更多