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

标签 javascript events jquery-mobile cordova

我有一个使用 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/

相关文章:

javascript - jQuery - 在 mousedown 上触发常规函数调用

c# - 键盘处理程序中的输入/返回键出现问题

php - 更新单选按钮值而不使用提交按钮

jquery - 我怎样才能防止用户在文本框中插入字符,而不是只有数字可以插入 jQuery Mobile

javascript - 如何防止模板文字中的条件呈现 false

javascript - D3.js 在鼠标悬停在栏上时更改标题文本

C# 显式删除事件处理程序

javascript - 如何使用 HTML5 Canvas 和 JavaScript 裁剪图像以离线裁剪图像?

javascript - 在组件内部单击按钮,调用父方法。如何?

asp.net - 哪个 Javascript 历史回溯实现是最好的?