代码 复制 - 运行

<!DOCTYPE HTML>  
<html>  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
    <title>鼠标长按</title>   
    </head>  
    <body>  
        <input type="button" onmousedown="holdDown()" onmouseup="holdUp()" value="鼠标长按"/>  
        <script type="text/javascript">    
            var timeStart,timeEnd,time;//申明全局变量  
              
            function getTimeNow()//获取此刻时间  
            {  
                var now=new Date();  
                return now.getTime();  
            }  
            function holdDown()//鼠标按下时触发  
            {  
                timeStart=getTimeNow();//获取鼠标按下时的时间  
                time=setInterval(function()//setInterval会每100毫秒执行一次  
                {  
                    timeEnd=getTimeNow();//也就是每100毫秒获取一次时间  
                    if(timeEnd-timeStart>1000)//如果此时检测到的时间与第一次获取的时间差有1000毫秒  
                    {  
                        clearInterval(time);//便不再继续重复此函数 (clearInterval取消周期性执行)  
                    alert("长按");//并弹出代码  
                    }  
                },100);  
            }  
            function holdUp()  
            {  
                clearInterval(time);//如果按下时间不到1000毫秒便弹起,  
            }  
        </script>   
    </body>  
</html>  



http://blog.csdn.net/hj7jay/article/details/52116969



小鱼改进版 :

代码 复制 - 运行

<!DOCTYPE HTML>  
<html>  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
    <title>鼠标长按</title>   
    </head>  
    <body>  
        <input type="button" onmousedown="holdDown()" onmouseup="holdUp()" value="鼠标长按"/>  
        <script type="text/javascript">    
            var timeStart,timeEnd,time;//申明全局变量  
              
            function getTimeNow()//获取此刻时间  
            {  
                var now=new Date().getTime();  
                return now.getTime();  
            }  
            function holdDown()//鼠标按下时触发  
            {  
                timeStart= new Date().getTime();//获取鼠标按下时的时间  
                time=setInterval(function()//setInterval会每100毫秒执行一次  
                {  
     timeEnd=new Date().getTime();//也就是每100毫秒获取一次时间  
                },100);  
            }  
            function holdUp()  
            {  
                clearInterval(time);//如果按下时间不到1000毫秒便弹起,  
                        
                    if(timeEnd-timeStart>500)//如果此时检测到的时间与第一次获取的时间差有1000毫秒  
                    {  
                        clearInterval(time);//便不再继续重复此函数 (clearInterval取消周期性执行)  
                    alert("长按");//并弹出代码  
                    }  else{
      alert("点击");
     }
            }  
        </script>   
    </body>  
</html>