Chrome 57 macht .data () nicht gut funktionieren

9

Dieser Teil eines .on("change") -Ereignisses funktioniert nicht ordnungsgemäß, wenn Benutzer in Chrome 57 arbeiten. Dies ist nur ein Problem mit Chrome 57.

Die Variable userId in if ist gesetzt und hat einen Wert, bevor sie an diesen Codeabschnitt gelangt.
Die Bedingung wird jedoch nicht als richtig erkannt, wenn sie es sollte.

Aber wenn ich Debugging habe und einen Breakpoint gesetzt habe denke ich an das if und ich halte am Breakpoint an und bleibe noch eine Weile, funktioniert das richtig.

Dies betrifft nicht alle Benutzer von 57.
Ich konnte dieses Problem nur zweimal neu erstellen und nach dem Debuggen geht es weg.

Irgendeine Idee, was passiert und wie man es repariert?
Ich werde auch bemerken, dass wir eine sehr alte Version von jquery - 1.11.1 verwenden und die Aktualisierung wird nicht einfach sein.

%Vor%     
Kendra Ball 30.03.2017, 23:06
quelle

2 Antworten

1

Für mich war das der Trick:

An der Stelle, an der .data () gesetzt ist, speichern Sie einfach das Element oder das Ergebnis der Daten irgendwo .

%Vor%

Dann sollte der Aufruf von $('#someElem').data('userId') gültige Daten in Ihrem Event-Handler zurückgeben.

Warum dies passiert: Ich wäre sehr dankbar für eine Antwort. Ein Kollege von mir hat vorgeschlagen, dass es etwas mit der Garbage Collection im neuen Chrome geben könnte. Aber wenn es so ist, sieht es so aus, als wäre es ein Fehler im GC.

    
Botis 06.04.2017, 11:54
quelle
1

Ich kenne die genaue Ursache nicht, aber das scheint mit der Speicherbereinigung zu tun zu haben. Außerdem hat Chrome begonnen, einige aggressive Javascript-Drosseln durchzuführen.

Ссылка

Ссылка

Ссылка

Ich habe eine sehr hacky Reparatur versucht, aber es scheint Dinge zu verbessern:

%Vor%

Laden Sie dieses Stück JavaScript nach jQuery und , bevor Sie den Code besitzen . Es sollte funktionieren.

Beachten Sie, dass dadurch verhindert wird, dass Objekte als Garbage Collected erfasst werden. Daher hat dies Auswirkungen auf den Speicher.

    
VRPF 07.04.2017 09:42
quelle