gpt4 book ai didi

javascript - Mousemove 回调事件不显示按下哪个鼠标按钮 safari

转载 作者:搜寻专家 更新时间:2023-11-01 04:15:34 27 4
gpt4 key购买 nike

我正在开发一个 HTML5 播放器。它在所有浏览器上工作正常,除了 osx 的 safari。 (该播放器应该只能在桌面浏览器上运行)。

我在使用搜索栏和音量栏时遇到问题。

基本上它是一个 slider ,但用 div 和东西实现。我做了以下事情。

为元素上的“mousemove”事件注册了一个回调。触发此回调时,我会检查事件中的按钮。使用 safari 时,此属性始终为“未定义”。

代码很简单:

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));

它适用于您需要的所有浏览器。

关于javascript - Mousemove 回调事件不显示按下哪个鼠标按钮 safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31748646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com