我有一个使用 Phonegap 和 JqueryMobile 开发的应用程序。
此应用程序在 iOS、Android 和 iPhone 中的总下载量约为 15.000 次。 代码在所有平台上都完全相同。
偶尔后端服务器重载,当我查看日志时,我发现一个用户发送了数百次相同的调用。 (用户是真实的人,我已经和他们讨论过这个问题,所以它不是机器人或类似的东西)
对我来说,似乎点击事件正在循环或服务器调用正在循环但无法检测原因。
15,000 名用户中有 3 名发生过这种情况(据我所知),并且这些用户在问题发生之前已经多次使用该应用程序。该问题发生在 Android 和 iOS 上,所以在我看来,jquerymobile/javascript 方面存在问题。
知道是什么导致了这个问题吗?
最佳答案
我想说的是,首先要注意 js/DOM 生成中的设计问题。
当你绑定(bind)一个已经绑定(bind)过的事件时,jquery会再次绑定(bind)它而不检查那个事件是否已经绑定(bind)过。如果你想附加多个,那很好 同一事件的事件函数。
无论如何,有几种方法可以解决这个问题。一种是在绑定(bind)之前取消绑定(bind)事件,使用 $.off()
,例如。
$("#myDiv").off("click").on("click", function(e) {
// ...
})
另一个是检查事件函数内部是否已经触发了事件,例如:
$("#myDiv").on("click",function(e) {
if(e.handled !== true) {
alert('Clicked');
e.handled = true;
}
})
您可以找到更多解决方案及其优缺点 here
关于javascript - 在 PhoneGap - Jquerymobile 应用程序上多次触发事件(甚至循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21120874/