Javascript 在PhoneGap-Jquerymobile应用程序上多次触发事件(甚至循环)

Javascript 在PhoneGap-Jquerymobile应用程序上多次触发事件(甚至循环),javascript,events,jquery-mobile,cordova,Javascript,Events,Jquery Mobile,Cordova,我有一个使用Phonegap和JqueryMobile开发的应用程序 该应用程序在iOS、Android和iPhone上的下载总量约为15000倍。 所有平台上的代码都完全相同 有时后端服务器会过载,当我查看日志时,会发现一个用户发送了数百次相同的呼叫。(用户是真实的人,我已经和他们谈过这个问题,所以它不是机器人或类似的东西) 对我来说,似乎click事件正在循环,或者服务器调用正在循环,但无法检测原因 据我所知,15000名用户中有3名出现过这种情况,而且在问题发生之前,用户已经多次使用该应用

我有一个使用Phonegap和JqueryMobile开发的应用程序

该应用程序在iOS、Android和iPhone上的下载总量约为15000倍。 所有平台上的代码都完全相同

有时后端服务器会过载,当我查看日志时,会发现一个用户发送了数百次相同的呼叫。(用户是真实的人,我已经和他们谈过这个问题,所以它不是机器人或类似的东西)

对我来说,似乎click事件正在循环,或者服务器调用正在循环,但无法检测原因

据我所知,15000名用户中有3名出现过这种情况,而且在问题发生之前,用户已经多次使用该应用程序。这个问题发生在Android和iOS上,所以在我看来,jquerymobile/javascript方面存在一个问题


知道是什么导致了这个问题吗?

在onclick函数中执行event.preventDefault()和event.stopPropagation()吗?(如果没有这一点,浏览器的行为可能会有很大差异)

另一方面,在onclick函数的开头隐藏或禁用按钮可以避免用户多次单击


我肯定你已经在做这些了,但以防万一…

我要说的是,首先要注意js/DOM生成中的设计问题

绑定已绑定的事件时,jquery将再次绑定该事件,而不检查该事件是否已绑定。如果要附加多个,则可以这样做 同一事件的事件函数

无论如何,有几种方法可以解决这个问题。一种是在绑定事件之前先解除绑定,例如

另一个是检查事件函数内部是否已触发事件,例如:

$("#myDiv").on("click",function(e) {
  if(e.handled !== true) {
      alert('Clicked');
      e.handled = true;
  }
})

您可以找到更多的解决方案及其优缺点

我在第一次触摸后禁用了按钮,解决了这个问题


似乎主要的问题是点击按钮两次,但由于某种原因,我无法检测到之后,它进入了一个无限循环。

谢谢。似乎onclick不是用户生成的,而是进入了一个循环,因为我在服务器上每秒收到大约3个调用。这似乎不是一个传播问题。还有其他想法吗?谢谢
$("#myDiv").on("click",function(e) {
  if(e.handled !== true) {
      alert('Clicked');
      e.handled = true;
  }
})