• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
pengpenglin
乐于工作,享受生活。
博客园    首页    新随笔    联系   管理    订阅  订阅
javascript中鼠标事件的总结

javascript 的鼠标事件常用的8个:

 mousedown:鼠标的键被按下。

mouseup:鼠标的键被释放谈起。

mouseover:鼠标移到目标的上方。

mouseout:鼠标移出目标的上方。

mousemove:鼠标在目标上方移动。

click:单击鼠标的键钮。dblclick: contextmenu:弹出右键菜单。

在DOM2.0中W3C对鼠标事件做了规范,鼠标事件被解析为MouseEvent。可以用(e.constructor==MouseEvent)来判读是否为鼠标事件。是左点击还是右点击有一个button属性可以判断,1:按下左键,2:按下中建,3:按下右键。

 但微软是很复杂的。

 IENS 4GE ≥ 1.0
SA 3
OP ≥ 8.0
GE0.9OP<8.0
e.button 左键 1 undefined 0 1 1
中键 4 undefined 1 2 3
右键 2 undefined 2 3 2
e.which 左键 undefined 1 1 1 1
中键 undefined 2 2 2 3
右键 undefined 3 3 3 2
            function bindMouseEvent(el) {
                var args = [].slice.call(arguments),  //相当于Array.slice.call(arguments)目的是将
                    //arguments对象的数组提出来转化为数组。arguments本身是对象。
                el = el || document;
                args[0] = function () { },
                args[1] = args[1] || args[0],
                args[2] = args[2] || args[0],
                args[3] = args[3] || args[0],
                el.onmousedown = function (e) {
                    e = e || window.event;
                    var button = e.button;
                    if (!e.which && isFinite(button)) {
                        e.which = [0, 1, 3, 0, 2, 0, 0, 0][button];//0现在代表没有意义
                    }
                    args[e.which](e);
                }
            }
            var el = document.getElementById("mouseShow");
            var resu = document.getElementById("result");
            var left = function () {
                resu.innerHTML = "左键被按下";
            }
            var middle = function () {
                resu.innerHTML = "中键被按下";
            }
            var right = function () {
                resu.innerHTML = "右键被按下";
            }
            bindMouseEvent(el, left, middle, right);
        }
View Code

 

当鼠标在网页上点击时,可以获得很多有用的参数,比如:以当前浏览器的可视区域为参照物(clientX,clientY),以显示屏整个屏幕为参照物(screenX,screenY),此外微软有一套相对用触发事件的对象offsetParent(X,Y),火狐的相对用当前网页的是(pageX,pageY),可以通过以下的函数来获得鼠标在网页的坐标。

var getCoordInDocument = function(e) {
    e = e || window.event;
    var x = e.pageX || (e.clientX +
      (document.documentElement.scrollLeft
      || document.body.scrollLeft));
    var y= e.pageY || (e.clientY +
      (document.documentElement.scrollTop
      || document.body.scrollTop));
    return {'x':x,'y':y};
  }
View Code

 

posted on 2014-09-26 16:03  pengpenglin  阅读(2308)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3