2013-05-08 39 views
1

我们创建可在本地教室网络上工作的分布式iPod Touch应用程序。我们的其中一个应用程序有一个控制器,可以让教室里充满学生的房间前面的共享显示屏上显示图标。JQM IOS:使用setInterval()changePage()在更新到JQM 1.3.1后不再有效

如果学生按住他们的手指,控制器将重复使用setInterval()移动图标。如果图标触击了班级显示中的对象,服务器会向应用发送消息以更改为其他页面。所有这些工作都在JQM 1.0.2中进行,直到我们的iPod被更新。我们对PhoneGap,JQ JQM进行了重大更新。 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浏览器中很好)。我们要更改页面(“#操作”):

// Handles message from the server that an object was captured 
    function handleOperations(fields) { 
     var tag = fields.tag; 
     var message = fields.content.value; 
     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; 
     } 
    } 

这些情况都涉及中断正在发生的事情。我们过去使用live()来处理这种事情,这在我们的工作中发生了很多。服务器经常会中断客户正在做的事情。我们如何获得live()功能?

更新:

如果只插入了changePage()它的工作原理之前,警报()。将不胜感激任何想法。现在很困惑。我们不能让警报不断弹出。

+0

您是否在控制台日志中看到错误? – Omar 2013-05-08 08:09:11

+0

谢谢奥马尔。运行浏览器时没有错误。有没有办法看到设备的控制台日志。我们是研究人员而非专业开发人 – Scot 2013-05-08 18:01:25

+0

更新:从一个未实现的电话差距插件中出现了一段时间的错误:file:/// Users/tobin/altme/worlds/sutherzone/files/UC%20Davis/UCD%20Projects/Classroom%20Networks /开发/ iOS%20开发/术语%20和%20Ops%20iOS /术语%20和%20运行%20iOSv4/www/cordova_plugins.json未能加载资源:在此服务器上找不到请求的URL。 file:///!gap_exec?1368036170513无法加载资源:在此服务器上找不到请求的URL。 – Scot 2013-05-08 18:05:26

回答

1

解决了使用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);