0

由于我们的一些用户已升级到iOS7,我们发现在 out phonegap (cordova)应用程序中的某些页面似乎失败了。场景是这样的:

用户想要预订一份工作,因此他们点击预订,出现一个对话框,他们选择预订的小时数,然后点击预订。应用程序使用 AJAX 与我们的服务器对话,并返回一个结果。如果出现错误(例如他们无法预订此人,则应用程序会显示另一个对话框。但是,当我们尝试在此对话框上运行 JavaScript 时,只要它尝试通过$('#Warnings')应用程序访问 div 就会停止运行。

任何人都可以提出为什么会发生这种情况以及发生了什么。(它适用于iOS6,我已经记录知道它在附加a之前已经转到liul我尝试更改我们将它移动到的事件,查看div是否存在(导致应用程序崩溃),移动JavaScript到页面底部。我的想法已经用完了!

我们正在运行JQuery-Mobile 1.3.2JQuery 1.9。Append 似乎适用于所有其他页面,与我们在这里的方式相同。

if (Ps.Logic.Type.hasValue(logicResult.Warnings)) {

    for (var f in logicResult.Warnings) {
        //add to warnings list
        Ps.File.Log("Diary_Logic_Error_Dialogue: Processing Warnings : (" + f + ") " + logicResult.Warnings[f], function () {
            //code
        });
        $('#WarningsList').append("<li>" + logicResult.Warnings[f] + "</li>");

        Ps.File.Log("Diary_Logic_Error_Dialogue: Processing Warnings : Added (" + f + ")", function () {
            //code 
        });
    }

    Ps.File.Log("Diary_Logic_Error_Dialogue: Processing Warnings : Done", function () {
        //code
    });

} else {
    Ps.File.Log("Diary_Logic_Error_Dialogue: Processing Warnings - No Value (Skipping)", function () {
        //code
    });
}

编辑:

基本上发生的事情是用户将工作放入一个时间段,然后他们会得到以下对话:

用户确认他们的选择

当用户单击“分配预订”时,客户端与服务器对话,如果有问题,服务器会检查所有内容,然后它应该显示以下对话框:

在此处输入图像描述

在 ios6 上,这完美运行,显示错误,用户可以继续或取消。但是,自从我们尝试显示此对话框(图 2 中的那个)时更新到 ios7 之后,一旦我们尝试执行一些编辑/附加项目到 DOM 的操作,它似乎就会停止处理页面。

4

1 回答 1

0

似乎在我们要访问的页面上放置一个事件侦听器实际上并不起作用 - 就好像当事件被调用时 DOM 不存在一样。例如

索引.html

 $.mobile.changePage("Page.html")

页面.html

$('#diary_Logic_error_dialog_page').on("pageshow", function () {
    $('#ProceedButton').bind("click", Test);
});

然而,我们似乎不能这样做。似乎,至少在 ios7 中,我们必须做更多类似的事情:

索引.html

(对我来说,这一行实际上位于 index.html 页面引用的另一个 javascript 文件中。)

$(document).delegate('#page', "pageshow", function (event) { PageShowExample() });

...

$.mobile.changePage("Page.html")

页面.html

function PageShowExample() { ... }

通过这样做,当页面显示被调用时,似乎 DOM 就在那里,因此只要我们尝试操作 DOM,它就不会死掉。

于 2013-11-12T16:35:50.190 回答