Jquery mobile JQM IOS:更新到JQM 1.3.1后,使用setInterval()changePage()不再有效

Jquery mobile JQM IOS:更新到JQM 1.3.1后,使用setInterval()changePage()不再有效,jquery-mobile,ios6,jquery-1.9,Jquery Mobile,Ios6,Jquery 1.9,我们创建在本地教室网络上工作的分布式iPod Touch应用程序。我们的一个应用程序有一个控制器,可以让满是学生的教室在教室前面的共享显示器上显示图标 如果学生按住手指,控制器使用setInterval()重复移动图标。如果图标击中类显示上的对象,服务器将向应用程序发送一条消息,以更改到另一个页面。在我们的iPod更新之前,所有这些都在JQM 1.0.2中运行。我们对PhoneGap、JQJQM进行了重大更新。IOS 6.1.3,我们切换到JQM 1.3.1。我们过去成功地使用了live()事件

我们创建在本地教室网络上工作的分布式iPod Touch应用程序。我们的一个应用程序有一个控制器,可以让满是学生的教室在教室前面的共享显示器上显示图标

如果学生按住手指,控制器使用setInterval()重复移动图标。如果图标击中类显示上的对象,服务器将向应用程序发送一条消息,以更改到另一个页面。在我们的iPod更新之前,所有这些都在JQM 1.0.2中运行。我们对PhoneGap、JQJQM进行了重大更新。IOS 6.1.3,我们切换到JQM 1.3.1。我们过去成功地使用了live()事件函数。现在我们在on()上遇到问题

我将尽力在此处显示代码:

这部分很好:

// Handles controller direction events to move icon on shared display
$(document).on('vmouseup vmousedown', ".controller", function(event){
    var evType, direction;
    evType = event.type;
    event.preventDefault();
    direction = $(this).attr("data");

    if (repeater != 0){clearInterval(repeater)};
    repeater = 0;
    if(evType == 'vmousedown'){
        move(direction);
        repeater = setInterval(function(){move(direction)},200);
    } else {
        clearInterval(repeater);
        repeater = 0;
    }
});
此部分冻结IOS设备上的捕获页面(包含控制器)(在OSX上的Safari浏览器中工作正常)。我们要更改页面(“操作”):

每一种情况都会打断正在发生的事情。过去我们用live()来处理这类事情,这类事情在我们的工作中经常发生。服务器经常会中断客户端正在做的事情。如何恢复live()功能

更新:


如果在changePage()之前插入一个alert(),它就会工作。如果您有任何想法,我将不胜感激。我现在很困惑。我们不能让警报不断弹出。

使用setTimeout()修复了此问题。以下是代码

setTimeout(function() {
    switch (tag) {
        case 'collective' :
            expression = message;
            $(".group-expression").html(expression);
            break;
        case 'capture' :
            term = message;
            $(".captured-expression").html(message);
            $.mobile.changePage("#operate");
            break;
        case 'flags' :
            updateOps(message);
    break;
    }
}, 0);

使用setTimeout()修复了此问题。代码如下

setTimeout(function() {
    switch (tag) {
        case 'collective' :
            expression = message;
            $(".group-expression").html(expression);
            break;
        case 'capture' :
            term = message;
            $(".captured-expression").html(message);
            $.mobile.changePage("#operate");
            break;
        case 'flags' :
            updateOps(message);
    break;
    }
}, 0);

控制台日志中有错误吗?谢谢Omar。运行浏览器时没有错误。是否有办法查看设备的控制台日志。我们是研究人员,而不是专业开发人员。更新:由于未实现phone gap插件,出现了一些错误:file:///Users/tobin/altme/worlds/sutherzone/files/UC%20Davis/UCD%20Projects/Classroom%20Networks/Development/iOS%20Development/Terms%20and%20Ops%20iOS/Terms%20and%20Operations%20iOSv4/www/cordova_plugins.jsonFailed 加载资源:在此服务器上找不到请求的URL。文件://!gap_exec?1368036170513加载资源失败:在此服务器上找不到请求的URL。我已修复该问题。在IOS 6中,回调函数和警报似乎是个问题。我用setTimeout(function(){…},0)括住来自服务器的回调,现在一切正常了。switch(tag){case'collective':expression=message;$(“.group expression”).html(expression);break;case'capture':term=message$(“.captured expression”).html(message);$.mobile.changePage(“#operate”);break;大小写“标志”:updateOps(message);break;}控制台日志中是否有错误?谢谢Omar。运行浏览器时没有错误。是否有方法查看设备的控制台日志。我们不是专业开发人员。更新:有一些错误是由于未实现的phone gap插件导致的:file:///Users/tobin/altme/worlds/sutherzone/files/UC%20Davis/UCD%20Projects/School%20Networks/Development/iOS%20Development/Terms%20and%20Ops%20iOS/Terms%20and%20Operations%20iOSv4/www/cordova_plugins.json加载资源失败:在该服务器上找不到请求的URL。文件://!gap_exec?1368036170513加载资源失败:在此服务器上找不到请求的URL。我有pr这个问题已经解决。似乎在IOS 6中回调函数和警报可能是一个问题。我用setTimeout(function(){…},0)将来自服务器的回调括起来,现在一切正常。switch(tag){case'collective':expression=message;$(“.group expression”).html(expression);break;case“capture”:term=message;$(“.captured expression”).html(message);$.mobile.changePage(#operate”);break;case“flags”:updateOps(message);break;}