Javascript pageshow vs pageinit,为什么我的页面使用pageshow而不是pageinit成功加载

Javascript pageshow vs pageinit,为什么我的页面使用pageshow而不是pageinit成功加载,javascript,jquery,ajax,web-services,Javascript,Jquery,Ajax,Web Services,我正在为blackberry 7开发webworks应用程序,我遇到了一个有趣的难题。我的代码可以在普通浏览器(Chrome)中完美运行,但不能在设备浏览器中运行 我有一个需要在pageinit上调用的webservice调用。奇怪的是这个。在pageshow上,呼叫和所有功能都可以完美运行,但在pageinit上则不行。如果我在pageinit上执行服务,webservice调用(Get Policys)将成功执行,然后它将永远不会继续执行pageinit中的其余代码 $('#ClaimsPa

我正在为blackberry 7开发webworks应用程序,我遇到了一个有趣的难题。我的代码可以在普通浏览器(Chrome)中完美运行,但不能在设备浏览器中运行

我有一个需要在pageinit上调用的webservice调用。奇怪的是这个。在pageshow上,呼叫和所有功能都可以完美运行,但在pageinit上则不行。如果我在pageinit上执行服务,webservice调用(Get Policys)将成功执行,然后它将永远不会继续执行pageinit中的其余代码

$('#ClaimsPage').bind('pageinit', function() {
    GetPolicies();
    //Never gets back to this point after completing the GetPolicies Function
    if (sessionStorage.wasSuccessful == 'true') {
        PolicyListBuilder(JSON.parse(sessionStorage.Policies));
    } else {
        goBack();
    }
            });
我的webservice调用很简单,如下所示

function GetPolicies() {
    showBusy("Retrieving Policies...");
    $.ajax({
        async: false,
        beforeSend: function (request) {
            request.setRequestHeader("Device", reportingDeviceId);
            request.setRequestHeader("Authorization", getAuth64());                
        },
        type: 'GET',
        url: PolicyGetWsUrl(),
        success: function (resultMessage) {
            sessionStorage.wasSuccessful = resultMessage.WasSuccessful;
            if (resultMessage.WasSuccessful == true) {
                sessionStorage.Policies = JSON.stringify(resultMessage.PolicyList);
                hideBusy();
            } else {
                alert(resultMessage.Description);
            }
        },
        error: genErrorMessage
    });
    hideBusy();
}
如果我使用

   $('#ClaimsPage').bind('pageshow', function()...
这个程序运行得很好,但我更希望它在pageinit上运行。我还尝试使用.on()而不是.bind()

也许我错过了什么

提前感谢您的帮助

编辑


我还应该注意到,我在同一个应用程序中使用了pageinit的其他几个地方,它们似乎工作得很好。这很奇怪。有人有什么想法吗?

好的,我做了一些研究,发现了一些东西

pageinit发生在整个DOM加载之前,因此如果引用控件,它可能还不存在,因此会失败


有一个变通办法。您可以使用.delegate()或$(document).ready()。。。这两种方法似乎都有效。如果有人有更好的答案,我会把它打开。

mobileinit可以工作,但这不是主页。如果我使用mobileinit,这意味着我必须在整个应用程序中存储用户可能永远无法访问的数据。但是谢谢你的回复。我没有想到mobileinit。这很聪明:)有没有具体的原因使代码在pageshow而不是pageinit上执行?