css: Hover funktioniert nicht in Chrome für verzögerte dynamisch hinzugefügte Klassen

8

Ich habe den folgenden Code, der einfach ein div erzeugt, das beim Überfahren seine Hintergrundfarbe in rot ändern sollte:

%Vor% %Vor% %Vor%

Dieser Code scheint in allen Browsern zu funktionieren, in denen ich ihn getestet habe, mit Ausnahme von Google Chrome. Insbesondere habe ich es mit den folgenden Betriebssystemen und Browsern getestet:

  • Windows 10 Home: Version 1703
    • Chrome: 62.0.3202.94
    • Firefox: 57.0
    • Firefox ESR: 52.5.0
    • Kante: 40.15063.674.0
    • IE11: 11.726.15063.0
  • OS X El Capitan: Version 10.11.6
    • Safari: Version 11.0.1

Wenn ich jedoch die Funktion setTimeout entferne, damit die Klasse sofort zum div hinzugefügt wird, funktioniert der Code in allen Browsern wie erwartet.

Warum passiert das? Ist das ein Fehler in Google Chrome oder eine Mehrdeutigkeit in irgendeiner Spezifikation irgendwo, oder ist es etwas anderes?

    
thejonwithnoh 20.11.2017, 13:36
quelle

2 Antworten

5

Es ist definitiv ein Bug in Chrome, Requisiten, um ihn zu finden.

Ich habe es hier eingereicht und in weniger als 24 Stunden wurde es markiert als Duplikat eines anderen Bugs, der ein Duplikat eines anderen Bugs ist, und schlussendlich zurück zu diesem . Es scheint mit einem Namenskonflikt von Konstanten zu tun zu haben, oder zumindest habe ich das gemacht. (Ich habe letzten Abend ziemlich viel Zeit damit verbracht, der Wanzenspur aus reiner Neugierde zu folgen).

Es wurde berichtet, dass dies von behoben wurde , aber ich weiß nicht genug bei Chromium / Chrome Versionierung, um Ihnen zu sagen, wann das Chrome zu einem stabilen Chrome macht.

Inzwischen habe ich festgestellt, dass ein Repaint für das Element erzwungen werden soll, nachdem die :hover -Regel deklariert wurde. Zum Beispiel: transform:scale(1); .

Testen Sie, ob der Fehler behoben ist, bis ein korrekter Bugfix zu stabilem Chrome führt:

%Vor% %Vor% %Vor%
    
Andrei Gheorghiu 22.11.2017, 14:27
quelle
0

Erstens scheint dies ein Bug in Google Chrome zu sein.

Eine mögliche alternative Lösung, um diese Situation zu umgehen, indem Sie JavaScript% s mouseover und mouseleave von JavaScript verwenden, ist (Google Chrome - Version 62.0.3202.94):

%Vor% %Vor%
    
Mamun 20.11.2017 15:52
quelle