2015-05-05 12 views
7

Muszę wykryć zdarzenie mouseup po mousedown w dokumencie.Zdarzenie mouseup w dokumencie document.documentElement nie uruchamia się z alertem

Próbowałem dodać detektor zdarzeń do document i document.documentElement bez powodzenia.

Potrzebuję rozwiązania wieloplatformowego bez jquery. Uwagi: problem pojawia się we wszystkich przeglądarkach korzystających z alert().

http://jsfiddle.net/0f7vrzh7/8/

document.documentElement.addEventListener('mousedown', function(){ 
alert('mousedown'); 
}); 

document.documentElement.addEventListener('mouseup', function(e){ 
alert('mouseup') 
}); 
+0

Wypróbuj elementu body – wallop

+3

try console.log zamiast alarmu, to działa dobrze !!. – Moussawi7

Odpowiedz

6

W niektórych przeglądarkach pierwszy alarm zatrzyma drugiego zdarzenia. Działa na przykład w przypadku alert w IE11. W przeglądarkach, w których występuje ten problem, pole alertu blokuje interfejs użytkownika, zanim zdarzenie mouseup zostanie przetworzone lub propagowane do elementu, do którego dołączona jest obsługa zdarzeń. Zmień na instrukcje console.log() w programach obsługi zdarzeń, a zdarzenia są uruchamiane zgodnie z oczekiwaniami. Updated fiddle.

+0

Dzięki za odpowiedź .... Masz pomysł, dlaczego drugi alert jest zatrzymywany w niektórych przeglądarkach? – GibboK

+0

@ GibboK Zaktualizowałem odpowiedź. –

+2

Console.logs są zawsze lepsze niż alerty. Nie zatrzymują interfejsu użytkownika i nie zaszkodzą, jeśli zapomnisz je usunąć. –

5

to twój alert blokuje zdarzenie mouseup. spróbuj

document.documentElement.addEventListener('mousedown', function(){ 
    document.getElementById("test").style.backgroundColor = "#ff0"; 
}); 

document.documentElement.addEventListener('mouseup', function(e){ 
    alert('mouseup') 
}); 

http://jsfiddle.net/0f7vrzh7/16/

Powiązane problemy