javascript实现单击和双击并存的方法

本文实例讲述了javascript实现单击和双击并存的方法。分享给大家供大家参考。具体分析如下:

在我们进行网页开发的过程中经常会遇到这么一个问题,为一个链接注册双击事件,或者让一个按钮或者其他元素上面同时注册单击或者双击事件,这时候我们发现网页中的双击事件似乎永远都不会起作用,原因是当我们点击一次的时候,就被超链接或者单击事件截获了,本文描述了一个如何解决这个技术问题的具体方法。本解决方案的实现原理是,单击事件和双击事件都调用同一个方法,我们根据两次鼠标点击的间隔时间来判断到底是单击还是双击事件。单击事件来临的时候先不调用,等一小段时间,过了这段时间,如果没有下一次单击来临就开始调用单击对应的操作,如果有下一次点击就调用双击。
详细描述请参加下面代码清单:

代码如下:

<HTML>
  <HEAD>
  <TITLE> javascript 实现单击和双击并存 </TITLE>
  <META NAME=" Generator" CONTENT=" EditPlus" >
  <META NAME=" Author" CONTENT=" http://www.jb51.net/" >
  <META NAME=" Keywords" CONTENT=" " >
  <META NAME=" Description" CONTENT=" " >
  </HEAD>

<BODY>
  <SCRIPT LANGUAGE=" JavaScript" >
  <!--
  var dcTime=250;       // doubleclick time
  var dcDelay=100;     // no clicks after doubleclick
  var dcAt=0;               // time of doubleclick
  var savEvent=null; // save Event for handling doClick().
  var savEvtTime=0;   // save time of click event.
  var savTO=null;       // handle of click setTimeOut
 
  function showMe(txt) {
    document.forms[0].elements[0].value += txt;
  }
 
  function handleWisely(which) {
    switch (which) {
        case " click" :           
            savEvent = which;
            d = new Date();
            savEvtTime = d.getTime();
            savTO = setTimeout(" doClick(savEvent)" , dcTime);
            break;
        case " dblclick" :
            doDoubleClick(which);
            break;
        default:
    }
  }
 
  function doClick(which) {
    if (savEvtTime - dcAt <= 0) {
        return false;
    }
    showMe(" 单击" );
  }
 
  function doDoubleClick(which) {
    var d = new Date();
    dcAt = d.getTime();
    if (savTO != null) {
        savTO = null;
    }
    showMe(" 双击" );
  }

//-->
  </SCRIPT>

<p>
            <a href=" javascript:void(0)"
                onclick=" handleWisely(event.type)"
                ondblclick=" handleWisely(event.type)"
                style=" color: blue; font-family: arial; cursor: hand" >
          点击一下看看结果:
      </a>
      </p>
       
      <form>
          <table>
              <tr>
                  <td valign=" top" >
                    事件模式: <textarea rows=" 4" cols=" 60" wrap=" soft" > </textarea>
                  </td>
              </tr>
              <tr>
                  <td valign=" top" >
                      <input type=" Reset" >
                  </td>
              </tr>
          </table>
      </form>
  </BODY>
</HTML>

希望本文所述对大家的javascript程序设计有所帮助。

(0)

相关推荐

  • js实现双击图片放大单击缩小的方法

    本文实例讲述了js实现双击图片放大单击缩小的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>双击图片放大,单击缩小</title> </head> <body> <SCRIPT

  • js jq 单击和双击区分示例介绍

    一:原理: 先看一下点击事件的执行顺序: 单击(click):mousedown,mouseout,click: 双击(dblclick):mousedown,mouseout,click , mousedown,mouseout,click,dblclick: 在双击事件(dblclick),触发的两次单击事件(click)中,第一次的单击事件(click)会被屏蔽掉,但第二次不会.也就是说双击事件(dblclick)会返回一次单击事件(click)结果和一次双击事件(dblclick) 结果

  • js鼠标单击和双击事件冲突问题的快速解决方法

    情况一 如果在一个DOM对象上同时绑定单击(click)和双击(dblclick)事件,当在这个DOM对象上发生双击事件时,第一次点击(click)会 触发一次单击(click)事件,第二次点击(连续的)也会触发双击(dblclick)事件,还是会触发单击(click)事件(IE7与 firefox). 解决方法: <button onclick="test(1)" ondblclick="test(2)"></button> <scr

  • JS实现鼠标单击与双击事件共存

    一直都认为在Web开发中,双击事件都是少至又少地使用,直到最近项目需要,要在一个按钮上绑定单击与双击两件事件.开始也觉得不就是给按钮绑下两个事件而已罢了--只是后来才明白,是我想得太简单,在双击事件触发的同时也会触发单击的~囧 通过一番研究后,终于利用JS中"setTimeout"延时执行方法的办法,将单击延迟300毫秒执行才解决了,代码如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit

  • javascript 单选按钮 单击选中 双击取消选择实现代码

    单选按钮,双击取消选中 window.onload = function() { // setRadio("myDiv", "form1", "alreadySelected"); var radios = document.getElementsByTagName("input"); for (var i = 0; i A: B: C: D: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  • javascript实现单击和双击并存的方法

    本文实例讲述了javascript实现单击和双击并存的方法.分享给大家供大家参考.具体分析如下: 在我们进行网页开发的过程中经常会遇到这么一个问题,为一个链接注册双击事件,或者让一个按钮或者其他元素上面同时注册单击或者双击事件,这时候我们发现网页中的双击事件似乎永远都不会起作用,原因是当我们点击一次的时候,就被超链接或者单击事件截获了,本文描述了一个如何解决这个技术问题的具体方法.本解决方案的实现原理是,单击事件和双击事件都调用同一个方法,我们根据两次鼠标点击的间隔时间来判断到底是单击还是双击事

  • Android 自定义View实现单击和双击事件的方法

    自定义View, 1. 自定义一个Runnable线程TouchEventCountThread ,  用来统计500ms内的点击次数 2. 在MyView中的 onTouchEvent 中调用 上面的线程 3. 自定义一个Handler, 在TouchEventHandler 中 处理 统计到的点击事件, 单击, 双击, 三击, 都可以处理 核心代码如下: public class MyView extends View { ...... // 统计500ms内的点击次数 TouchEvent

  • 鼠标左键单击变双击的解决方法

    偶的罗技鼠标有点问题了,看来是微动开关的问题,从网上找了点资料,有时间了试试. Quote: 把鼠标打开,找到鼠标左按键的微动开关,一个黑色的小盒子卡在电路板上.打开微动开关的方法是用牙签从侧面下方的小洞插入撬开,轻撬微动开关中部的卡子,注意不要盲目乱插,观察一下上面的机关再动手,小心别用力过猛导致塑料上盖损坏.轻轻将微动开关的上盖打开,这时可以看到下面的铜片,铜片如果变型就取下来小心撑回原来的形状,然后装回原处. 用棉花棒蘸上酒精清洗一下铜片,清洗的过程中,用力要均匀,避免铜片移位.一定不要带

  • JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法

    本文实例讲述了JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法.分享给大家供大家参考,具体如下: 在一些不正规的网站,尤其是那些挂满广告的下载站,经常在你点击的下载链接之前,无论你点击网页的任何一处都会弹出新窗口. 这样的效果,可以轻松用JavaScript做到,还可以专门指定点击某一区域的Div,才触发打开新窗口的事件. 比如下图的效果: 在原网页中,指定一个Div,无论用户点击这个Div的任意区域,都会打开新窗口,而点击其它地方则不会. 在新窗口的地址栏不可以编辑,不能被调

  • iOS touch事件区分单击双击响应的方法

    如果您的 iPhone 应用里有个 view,既有单击操作又有双击操作.用户双击 view 时,总是先执行一遍单击的操作再执行双击的操作.所以直接判断时就会发现不能直接进入双击操作.下面是区分 touch 事件是单击还是双击的方法 -(void)singleTap{ NSLog(@"Tap 1 time"); } -(void)doubleTap{ NSLog(@"Tap 2 time"); } - (void)touchesBegan:(NSSet *)touch

  • JavaScript实现单击下拉框选择直接跳转页面的方法

    本文实例讲述了JavaScript实现单击下拉框选择直接跳转页面的方法.分享给大家供大家参考.具体实现方法如下: <script type="text/JavaScript"> <!-- function MM_jumpMenu(targ,selObj,restore){ //v3.0 eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");

  • JS中双击和单击事件冲突的解决方法

    在JS中代码中同一功能块中通常同时会用到单击.双击事件,但通常会遇到一个问题,就是在双击的时候即执行了一次双击事件,而且还执行了两次单击事件.此类冲突在ZTree.DHTMLX中经常遇到. 想要解决两个事件冲突,需要对单击事件进行延时,如果在此延时中又监测到单击事件,那么认为此两次单击属于一个双击事件,则只执行双击事件,并第一时间将延时定时器清理,以防止第二次单击生效. 具体代码如下: var clickFlag = null;//是否点击标识(定时器编号) function doOnClick

随机推荐