Jquery mobile JQM IOS:更新到JQM 1.3.1后,使用setInterval()changePage()不再有效
我们创建在本地教室网络上工作的分布式iPod Touch应用程序。我们的一个应用程序有一个控制器,可以让满是学生的教室在教室前面的共享显示器上显示图标 如果学生按住手指,控制器使用setInterval()重复移动图标。如果图标击中类显示上的对象,服务器将向应用程序发送一条消息,以更改到另一个页面。在我们的iPod更新之前,所有这些都在JQM 1.0.2中运行。我们对PhoneGap、JQJQM进行了重大更新。IOS 6.1.3,我们切换到JQM 1.3.1。我们过去成功地使用了live()事件函数。现在我们在on()上遇到问题 我将尽力在此处显示代码: 这部分很好: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()事件
// 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;}