Bor*_*nov 31 javascript opera google-chrome key mouseevent
我讨厌W3C和MS创建的鼠标按钮!我想知道当我得到一个mousedown事件时是否按下了鼠标左键.
我用这个代码
// Return true if evt carries left mouse button press
function detectLeftButton(evt) {
// W3C
if (window.event == null) {
return (evt.button == 0)
}
// IE
else {
return (evt.button == 1);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,它在Opera和Chrome中不起作用,因为它也发生在window.event中.
那我该怎么办?我有一些浏览器检测,但我们都知道它不能依赖于某些浏览器最近做的所有屏蔽.如何检测鼠标左键RELIABLY?
Tim*_*own 41
更新的答案.以下将检测是否按下了左键和鼠标左键:
function detectLeftButton(evt) {
evt = evt || window.event;
if ("buttons" in evt) {
return evt.buttons == 1;
}
var button = evt.which || evt.button;
return button == 1;
}
Run Code Online (Sandbox Code Playgroud)
有关在JavaScript中处理鼠标事件的更多信息,请尝试http://unixpapa.com/js/mouse.html
rob*_*cat 11
现在有一个W3C标准 event.buttons的支持的属性IE9在标准模式下,和壁虎15+.
在W3C完全塞满了event.button属性,因此对符合标准的浏览器event.button是0,但对于标准之前创建的浏览器,event.button为1.
因此代码必须避免使用event.button旧版浏览器.以下代码应该有效:
function detectLeftButton(event) {
if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) {
return false;
} else if ('buttons' in event) {
return event.buttons === 1;
} else if ('which' in event) {
return event.which === 1;
} else {
return (event.button == 1 || event.type == 'click');
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56643 次 |
| 最近记录: |