鼠标移动回调事件没有显示哪个鼠标按钮被按下
Mousemove callback event not showing which mouse button is pressed safari
我正在开发一个HTML5播放器。它在所有浏览器上都能正常工作,除了osx的safari。(这个播放器应该只能在桌面浏览器上工作)。
我的搜索栏和音量栏有问题。
基本上它是一个滑动条,但是用div之类的实现。我做了以下的事情。
为' mousmove '事件在元素上注册了一个回调函数。当这个回调被触发时,我检查按钮事件。当使用safari时,此属性总是'undefined'。
代码很简单:
this.controls.$seekBar.on('mousemove', (function(_this){
return function(event){
if (event.buttons == 1) {
// Do some stuff
}
}
})(this))
.on('mousedown', (function(_this){
return function(event){
if (event.buttons == 1) {
// Do some stuff
}
}
})(this));
因为它是一个jQuery插件,我需要使用闭包来传递插件上下文回调,但这不是问题。我测试没有作为一个jQuery插件和相同的错误发生。
safari中生成的事件对象:
altKey: false
bubbles: true
button: 0
buttons: undefined
cancelable: true
clientX: 529
clientY: 674
ctrlKey: false
currentTarget: div#seekBar1.vjs-progress-holder vjs-slider
data: undefined
delegateTarget: div#seekBar1.vjs-progress-holder vjs-slider
eventPhase: 2
fromElement: null
handleObj: Object
isDefaultPrevented: function bb() {return!1;}
jQuery111103980477461591363: true
metaKey: false
offsetX: 150
offsetY: 8
originalEvent: MouseEvent
pageX: 529
pageY: 781
relatedTarget: null
screenX: 530
screenY: 759
shiftKey: false
target: div#seekBar1.vjs-progress-holder vjs-slider
timeStamp: 1438352150671
toElement: div#seekBar1.vjs-progress-holder vjs-slider
type: "mousedown"
view: Window
which: 1
__proto__: Object
firefox中生成的事件对象:
altKey: false
bubbles: true
button: 0
buttons: 1
cancelable: true
clientX: 587
clientY: 563
ctrlKey: false
currentTarget: div#seekBar1.vjs-progress-holder.vjs-slider
data: undefined
delegateTarget: div#seekBar1.vjs-progress-holder.vjs-slider
eventPhase: 3
fromElement: undefined
handleObj: Object { type="mousedown", origType="mousedown", guid=36, more...}
jQuery111105827101769842828: true
metaKey: false
offsetX: undefined
offsetY: undefined
originalEvent: mousedown clientX=587, clientY=563
pageX: 587
pageY: 780
relatedTarget: null
screenX: 587
screenY: 665
shiftKey: false
target: div#progressBar1.vjs-play-progress
timeStamp: 1175114810
toElement: undefined
type: "mousedown"
view: Window 561
which: 1
isDefaultPrevented: bb()
isImmediatePropagationStopped: bb()
isPropagationStopped: bb()
preventDefault: function()
stopImmediatePropagation: function()
stopPropagation: function()
__proto__: Object { isDefaultPrevented=bb(), isPropagationStopped=bb(), isImmediatePropagationStopped=bb(), more..
您可以简单地像下面这样修改代码:
this.controls.$seekBar.on('mousemove', (function(_this){
return function(event){
var buttons = (e.buttons === undefined ? e.which : e.buttons);
if (buttons == 1) {
// Do some stuff
}
}
})(this))
.on('mousedown', (function(_this){
return function(event){
var buttons = (e.buttons === undefined ? e.which : e.buttons);
if (event.buttons == 1) {
// Do some stuff
}
}
})(this));
它将适用于所有浏览器
相关文章:
- 如何知道鼠标按钮的当前状态(mouseup状态或mousedown状态)
- 如何使用Javascript检查当前鼠标按钮状态
- 如何在按住鼠标按钮且光标在视口外时检测鼠标离开
- jQuery UI可排序,释放鼠标按钮事件
- 有可能得到鼠标按钮4、5等吗
- 当鼠标按钮的指针尝试关闭弹出窗口时,阴影弹出框消失
- 织物.js - 在不按住鼠标按钮的情况下移动对象
- HTML5画布:如果在画布上移动鼠标时按下了鼠标按钮,则进行检测
- 检查按下了哪个鼠标按钮,如果是双击
- CSS选择器:悬停加上未按下鼠标按钮
- 按下鼠标按钮时监视鼠标坐标
- 无法检测在移动鼠标时按下的鼠标按钮
- 是鼠标按钮的单击通用
- Dart HTML-在不释放鼠标按钮的情况下更改输入范围
- 当我按住鼠标按钮移动鼠标时,Fabric.js–元素是未定义的
- 布尔函数来知道鼠标按钮的位置
- 如何在按下鼠标按钮时触发' onMouseEnter '
- 鼠标事件"mousemove"在按下和释放鼠标按钮时触发
- KineticJS:获取鼠标按钮,x和y从'点击'圆圈上的事件
- 鼠标移动回调事件没有显示哪个鼠标按钮被按下