【问题标题】:Javascript / Jquery, disabling all double clicks anywhere within body of web page?Javascript / Jquery,禁用网页正文内任何位置的所有双击?
【发布时间】:2017-11-18 21:07:15
【问题描述】:

我已经为 Web 应用编写了很多 AJAX 代码,并没有考虑双击某些东西可能导致的问题。我已经为敏感的 AJAX 调用实现了一个“inprogress”变量,这样它就不会被用户双击弄乱,但我想知道是否有一种简单的方法可以在任何地方(在任何元素中)禁用所有双击整个网页正文,而不必为每个特定元素单独执行。

感谢您的建议

【问题讨论】:

  • 您的意思是“双击”,意思是两次单击之间几乎没有暂停,或者在连接到 ajax 调用的按钮上单击 2 次以上,因此会添加在旧 on 之上的另一个调用,等等....?
  • 我的意思是双击,就像你必须双击 Windows 桌面图标上的某些东西才能打开应用程序/文件一样。虽然我自己不这样做,但我们的一些用户对这个根深蒂固的操作存在问题,因此他们双击网络应用程序上的所有内容

标签: javascript jquery dom double-click


【解决方案1】:

尝试像这样疯狂的事情:

$("*").dblclick(function (event)
{
    event.preventDefault();
});

理论上,它会捕获任何元素上的双击事件,然后基本上什么都不做(取消默认操作)。

【讨论】:

  • 不幸的是,这似乎不起作用,不太清楚为什么我把它放在$(document).ready(function() { } 中,有人证实这对他们有用吗?
  • 我设置了警报,以便它现在会告诉我何时执行了双击并且这有效,但实际上取消第二次单击的部分似乎对我不起作用
  • 老实说,我不知道您要阻止用户做什么。双击链接?为什么?我刚刚发布了这个,因为它应该按照你的要求做,但你必须意识到浏览器可能也在监听点击,并且可能会选择做一些你无法控制的事情。
  • 是的,基本上可以防止他们双击一个链接,因为如果他们这样做两次,它会破坏应用程序当前编码的 AJAX 返回方式(例如将 ajax 返回两次加载到 div 中)
【解决方案2】:
$('*').dblclick(function(event) { event.preventDefault(); return false; });

应该处理它,但是可能有更好的解决方案。

【讨论】:

  • 返回 false 有什么好处?
  • @Mohsen 它在普通的 javascript 事件处理程序中执行与 preventDefault() 类似的任务。如果 preventDefault() 和浏览器之间存在兼容性问题,我通常也会这样做。虽然我不知道这种情况是否真的发生过。
【解决方案3】:

如果您没有将事件绑定到双击,则双击不会执行任何操作。这是它自己的事件。
Click 和 DoubleClick 是不同的事件。

【讨论】:

  • 我大部分时间都没有绑定,我已经在很多事情上使用了 onclick,所以肯定会同时接受点击和导致问题,我想让应用程序成为服务器端的重尽可能所以我这样做是为了便于阅读代码,因为我不是一个大的 javascripter
猜你喜欢
  • 1970-01-01
  • 2011-07-11
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 2011-03-24
相关资源
最近更新 更多