Gegeben der folgende HTML:
%Vor%Und etwas JS, das das Klickereignis mit JQuery erkennt:
%Vor%Wenn Sie einen Teil des Textes im div auswählen, wird das click -Ereignis nicht von Opera geworfen (getestet mit Opera 11.61 unter Linux und 11.62 unter Windows) . Doppelklicken Sie auf ein Wort, um es teilweise zu markieren funktioniert .
Das Ereignis wird in IE7-9, Firefox, Chrome und Safari ausgelöst. Es gibt eine leicht modifizierte JSFiddle hier .
Ist das erwartetes Verhalten, ein JQuery-Fehler, ein Opera-Fehler oder etwas anderes?
Welches Verhalten "richtig" ist, ist sicherlich eine interessante Frage. Meine Meinung dazu: Ich persönlich halte das Verhalten von Opera für sinnvoller, da das, was der Benutzer hier beabsichtigt, eindeutig nicht auf etwas "klickt", sondern etwas "auswählt".
Andererseits denke ich auch, dass Opera es so ändern sollte, dass es mit den anderen Browsern kompatibel ist (es sei denn, wir können die anderen Browser dazu bringen, Opera zu entsprechen). Kompatibilität ist sehr, sehr wichtig. Also, mit meiner Opera-Mitarbeiterin auf Hut: Ich denke, wir haben Recht, und ich denke, wir sollten das beheben :-p
Es ist bekannt, dass Klickereignisse zwischen verschiedenen Elementen und verschiedenen Browsern inkonsistent sind. Im Kern sollte ein Klick-Ereignis ausgelöst werden, wenn ein einzelnes Element einen Maus-Down gefolgt von einem Mouse-Up aufzeichnet, siehe jquery doc .
Der beste Rat, den ich gehört habe, stammt von hier :
Ob dies ein Problem ist oder nicht, hängt von der gewünschten Benutzerinteraktion ab. Normalerweise sollten Sie Ihr Skript jedoch nur dann aktivieren, wenn Sie sich ganz sicher sind, dass Sie das Click-Ereignis und nichts anderes möchten.
Also, in Übereinstimmung mit den Kommentaren zu Ihrer Frage, ist die einfachste Lösung, sich bei mousedown oder mouseup zu registrieren (was vom Verhalten abhängt, das Sie suchen, das engste Verhalten gegenüber 'click' wäre 'mouseup')
Tags und Links jquery html5 opera jquery-click-event