【问题标题】:Preventing Double Clicks on image map areas防止双击图像地图区域
【发布时间】:2013-10-02 23:31:32
【问题描述】:

我有一个基本图像 ma​​p,当单击 area 时,它会执行 javascript/jquery 例程。目前,如果双击该区域,则会执行两次DoStuff() 方法。谁能提供一种方法来防止双击场景中的双重执行?

<img src="images/myimage.png" border="0" usemap="#Map1" />
<map name="Map1">
    <area coords="5,115,97,150" href="javascript:void(0);" onclick="DoStuff()">
    <area coords="104,116,199,149" href="javascript:void(0);" onclick="DoStuff()">
</map>

【问题讨论】:

  • 一个非常基本且蛮力的方法是在 DoStuff() 中添加一个计时器/间隔,并检查是否经过了适当的时间,然后您才允许它再次运行。

标签: javascript jquery html double-click


【解决方案1】:

使用布尔标志。

var hasBeenClicked = false;

// Your code...

if(!hasBeenClicked){
    hasBeenClicked = true;

    // My routine

    setTimeout(function(){ // McPhelpsius's idea (wait for 1sec before we can click again)
        hasBeenClicked = false; // My routine is over, we can click again
    }, 1000);
 } else {
    // do nothing 
 }

【讨论】:

  • setTimeout(1000) 呢?这对于在可点击时间之间添加一整秒可能很有用。
  • 已编辑。感谢您的想法
【解决方案2】:

如果您使用的是 jQuery,您可以在点击处理程序的顶部包含它。单击时,它将禁用阻止任何单击事件发生的元素。

function DoStuff() {
    $('[name="Map1"]').prop('disabled', true);
    //Do Stuff..
}

This 根据您的 jQuery 版本解释了一些其他选项。

【讨论】:

  • 刚试了一下,并没有阻止双重执行...我在这个方法中调用window.open,我总是打开两个窗口。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多