javascript中区分鼠标单击和拖动事件

在javascript中,一般的DOM元素如div,都有onmousedown、onmousemove、onmouseup这3个鼠标事件。

<div id="div1" onmousedown="down();" onmouseup="up();" onmousemove="move();"></div>

当鼠标在div1上移动或者按下左键拖动的时候,都会触发onmousemove事件。如何区分这2种事件呢?如何区分鼠标单击弹起和拖动后弹起呢?区分鼠标单击弹起和拖动后弹起,可以注册onmousedown和onmouseup事件处理函数,在onmousedown中记录鼠标按下的位置,在onmouseup中记录鼠标弹起的位置,然后比较这2个位置的差距。如果距离差距不大,则是鼠标单击后弹起;如果距离相差较大,则是鼠标拖动后弹起。下面介绍的是使用setTimeout来实现。

<div id="div1" onmousedown="down();" onmouseup="up();" onmousemove="move();" />

<script type="text/javascript">
    var timmerHandle = null;
    var isDrag = false;

    function down()
    {
    	console.log("mouse down.");
        //因为mouseDownFun每次都会调用的,在这里重新初始化这个变量
        isDrag = false;

        //延迟100ms
        timmerHandle = setTimeout(setDragTrue,200);
    }

    function setDragTrue()
    {
    	isDrag = true;
    }

    function move()
    {
	//可以使用isDrag来判断是移动还是拖动
    }

    function up()
    {

        if (!isDrag)
        {
    	    //先把doMouseDownTimmer清除,不然200毫秒后setGragTrue方法还是会被调用的
            clearTimeout(timmerHandle);
            console.log("mouse up.");
        }
    	else
    	{
    	    isDrag = false;
    	    console.log("draging over.");
    	}
    }
</script>

使用setTimeout这种是基于时间的做法,使用坐标是基于空间的做法。

时间: 2024-10-28 18:52:36

javascript中区分鼠标单击和拖动事件的相关文章

JavaScript中,有三种常用的绑定事件的方法

要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的绑定事件的方法: 在DOM元素中直接绑定: 在JavaScript代码中绑定: 绑定事件监听函数. 一. 在DOM元素中直接绑定 这里的DOM元素,可以理解为HTML标签.JavaScript支持在标签中直接绑定事件,语法为:    onXXX="JavaScript Code" 其中:

javascript中点击鼠标右键触发的事件

javascript中事件有很多种,这里只谈一个很有用,但不常见的事件. 单击鼠标右键触发的事件contextmenu事件. document.oncontextmenu=function(){ return false; } 这样就可以屏蔽掉鼠标右击的事件.当然如果需要什么效果也可以在事件监听函数中添加.

js区分鼠标单双击 阻止事件冒泡

function clickOrDblClick(obj) { count++; if (obj != undefined) { var rowStr = $.trim($(obj).find("td:eq(1)").text().replace(/※/g, '')); currentRowpm = rowStr; } timer = window.setTimeout(function(obj) { var currentTr = $("#tbMainDeputy"

JavaScript中的鼠标事件

利用下面这个div标签来做鼠标事件的演示,当把鼠标在‘我是div’和’我是span‘两个位置及其之外的位置上操作时,不同事件操作结果不同 <div class="div1">我是div <br> <span>我是span</span> </div> 1.左键单击事件 click var oDiv = document.querySelector('div'); oDiv.onclick = function(){ consol

javascript 中 keyup、keypress和keydown事件

keyup.keypress和keydown事件都是有关于键盘的事件 1. keydown事件在键盘的键被按下的时候触发,keyup 事件在按键被释放的时候触发    keydown.keypress事件触发在文字还没敲进文本框,这时如果在keydown.keypress事件中输出文本框中的文本,得到的是触发键盘事件前的文本,而keyup事件触发时整个键盘事件的操作已经完成,获得的是触发键盘事件后的文本 注意:        KeyDown触发后,不一定触发KeyUp,当KeyDown 按下后,

javascript中的window和document特殊事件

页面离开时的confirm提示 window.onbeforeunload = function() {       return '你确认要离开吗?';    }; 页面加载完成的事件(在onload之后调用) document.onreadystatechange = function() {        if(document.readyState=='complete')        {                } } 触摸事件 function load (){ docume

javascript中常用的事件绑定方法

我们要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的绑定事件的方法: 在DOM元素中直接绑定: 在JavaScript代码中绑定: 绑定事件监听函数. 一. 在DOM元素中直接绑定 这里的DOM元素,可以理解为HTML标签.JavaScript支持在标签中直接绑定事件,语法为:    onXXX="JavaScript Code" 其中

javascript鼠标双击时触发事件大全

javascript事件列表解说 事件 浏览器支持 解说 一般事件 onclick IE3.N2 鼠标点击时触发此事件 ondblclick IE4.N4 鼠标双击时触发此事件 onmousedown IE4.N4 按下鼠标时触发此事件 onmouseup IE4.N4 鼠标按下后松开鼠标时触发此事件 onmouseover IE3.N2 当鼠标移动到某对象范围的上方时触发此事件 onmousemove IE4.N4 鼠标移动时触发此事件 onmouseout IE4.N3 当鼠标离开某对象范围

JavaScript中的事件冒泡?事件传播的解释

注:本文来源  可译网 事件冒泡是你在学习javaScript旅途中遇到的一个术语,它涉及到当一个元素被另一个元素嵌套时调用事件处理的顺序,并且两个元素注册了同一个事件(例如,点击事件). 但是事件冒泡仅仅是难题的一部分.它经常和事件捕获和事件传播一起被提及,并且对这三个概念有着很深的了解是学习javaScript事件必不可少的,例如,假如你想实现事件委托. 在这篇文章中,我会解释这些术语,并展示它们如何组合在一起.我还将向您展示如何对JavaScript事件流的基本了解可以让您对应用程序进行细