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