javascript 的鼠标事件常用的8个:
mousedown:鼠标的键被按下。
mouseup:鼠标的键被释放谈起。
mouseover:鼠标移到目标的上方。
mouseout:鼠标移出目标的上方。
mousemove:鼠标在目标上方移动。
click:单击鼠标的键钮。dblclick: contextmenu:弹出右键菜单。
在DOM2.0中W3C对鼠标事件做了规范,鼠标事件被解析为MouseEvent。可以用(e.constructor==MouseEvent)来判读是否为鼠标事件。是左点击还是右点击有一个button属性可以判断,1:按下左键,2:按下中建,3:按下右键。
但微软是很复杂的。
| IE | NS 4 | GE ≥ 1.0 SA 3 OP ≥ 8.0 | GE0.9 | OP<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);
}
当鼠标在网页上点击时,可以获得很多有用的参数,比如:以当前浏览器的可视区域为参照物(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};
}