2015-05-05 4 views
7

Ich muss mouseup Ereignis nach mousedown auf dem Dokument erkennen.MouseUp-Ereignis auf Document.documentElement löst nicht mit Alert

Ich habe versucht, einen Ereignis-Listener zu document und document.documentElement ohne Erfolg hinzuzufügen.

Ich brauche möglicherweise eine plattformübergreifende Lösung ohne jquery. Hinweise: Das Problem tritt bei nicht allen Browsern auf, die alert() verwenden.

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

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

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

Versuchen Sie es auf Körperelement – wallop

+3

try console.log statt Alarm, es in Ordnung !! funktioniert. – Moussawi7

Antwort

6

In bestimmten Browsern wäre der erste Alarm das zweite Ereignis zu stoppen. Es funktioniert sogar mit alert in IE11 zum Beispiel. In den Browsern, in denen dieses Problem auftritt, blockiert das Warnfeld die Benutzeroberfläche, bevor das Ereignis mouseup verarbeitet oder an das Element weitergegeben wird, mit dem der Ereignishandler verknüpft ist. Ändern Sie zu console.log() Anweisungen in Ihren Ereignishandlern und die Ereignisse werden ausgelöst, wie Sie es erwarten. Updated fiddle.

+0

Vielen Dank für Ihre Antwort .... Haben Sie eine Idee, warum die zweite Warnung in bestimmten Browsern gestoppt wird? – GibboK

+0

@GibboK Ich habe die Antwort aktualisiert. –

+2

Console.logs sind immer besser als Warnungen. Sie stoppen die Benutzeroberfläche nicht und tun nicht weh, wenn Sie vergessen, sie zu entfernen. –

5

es ist deins alarm blockieren die mouseup ereignis. versuchen, mit

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

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

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