我有一个使用Phonegap和JqueryMobile开发的应用程序.
这个应用程序已经在iOS,Android和iPhone下载了大约15.000倍.所有平台上的代码完全相同.
有一段时间后端服务器超载,当我查看日志时,我看到一个用户发送了数百次相同的呼叫.(用户是真实的人,我和他们谈过这个问题,所以它不是机器人或类似的东西)
对我来说,似乎click事件是循环或服务器调用是循环但无法检测原因.
这已经发生在15.000中的3个用户(据我所知),并且用户在问题发生之前已多次使用该应用程序.这个问题发生在Android和iOS上,所以在我看来jquerymobile/javascript方面存在问题.
知道什么可能导致这个问题吗?
我要说的是先注意你的js/DOM生成中的设计问题.
绑定已绑定的事件时,jquery将再次绑定它,而不检查该事件是否已被绑定.如果要将多个事件函数附加到同一事件,那就没问题.
无论如何,有几种方法可以解决这个问题.一种是在绑定之前取消绑定事件$.off()
,例如.
$("#myDiv").off("click").on("click", function(e) { // ... })
另一个是检查事件函数内部是否已经触发了事件,例如:
$("#myDiv").on("click",function(e) { if(e.handled !== true) { alert('Clicked'); e.handled = true; } })
您可以在这里找到更多有利可图的解决方案