Im rozwija HTML5 Player. Działa poprawnie we wszystkich przeglądarkach, z wyjątkiem Safari dla osx. (Ten odtwarzacz powinien działać tylko w przeglądarce na komputerze).mouseMove wydarzenie zwrotna nie pokazano, który przycisk myszy jest naciśnięty safari
Mam problem z poszukiwania Bar e pasek głośności.
Zasadniczo jest to slider, ale realizowane z div i rzeczy. Zrobiłem co następuje.
Zarejestrowana wywołania zwrotnego na elemencie do imprezy „” mousemove. Po wywołaniu wywołań zwrotnych sprawdzam zdarzenie pod kątem przycisków. Podczas korzystania z safari ten atrybut jest zawsze "niezdefiniowany".
Kod jest bardzo prosty:
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));
Ponieważ jest to plugin jQuery, trzeba użyć zamknięć przekazać kontekst wtyczek do wywołania zwrotnego, ale to nie jest problem. Przetestowałem bez bycia wtyczką jQuery i pojawia się ten sam błąd. Obiekt
Zdarzenie generowane w safari: obiekt
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
Zdarzenie generowane w 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..
'event.which' nieruchomość jest znormalizowana w przypadku JQ, więc myślę, użyj go ... –
używałem event.buttons aby sprawdzić, które myszy jest wciśnięty. Event.which zawsze jest 1 na safari, nawet gdy nie klikam przycisku myszy. – dvtelles
To exatly cel '' własności which' https://api.jquery.com/event.which/ Event.which jest zawsze 1 w safari' To nie powinno! Może to być błąd, ale chyba nie EDIT: OK, myślałem o wydarzeniu, które wewnątrz mousedown, a nie mousemove, moje złe! –