Vue: event.target ist null in Chrome auf img

Erstellt am 9. Nov. 2017  ·  4Kommentare  ·  Quelle: vuejs/vue

Ausführung

2.5.3

Reproduktionslink

https://jsbin.com/jafufah/1/edit?html ,js,Konsole,Ausgabe

Schritte zum Reproduzieren

Nur in Chrome (61.0.3163) und manchmal Safari (11.0.1).

  1. Link zu jsbin öffnen
  2. Klicken Sie auf Mit JS ausführen
  3. Beachten Sie, dass die Konsole zuerst eine Referenz von event.target und dann null für dieselbe Eigenschaft ausgibt.

Was wird erwartet?

In Firefox, Edge und IE11 ist event.target nie null .

Was passiert eigentlich?

event.target ist null wenn das Ereignis bis zum nächsten Tick in einer Variablen gespeichert wird.


Ich bin mir nicht sicher, ob dies ein Fehler in Vue.js oder in Chrome ist, aber ich dachte, mehr Augen auf die Angelegenheit werden zur Klärung beitragen.

Ich habe dies zum ersten Mal in einer nuxt.js-Anwendung gesehen, aber es ist einfach in vue.js zu reproduzieren, also denke ich, dass es entweder in vue core oder in Chrome (blink/webkit) ist.

Ich habe das gleiche mit einem <object> Load-Handler gemacht und das ist noch nie passiert - es ist spezifisch für das <img> Element oder die Größe der zu ladenden Datei.

Alle 4 Kommentare

Es ist kein Fehler: Sie können nicht garantieren, dass das Ereignis in einem asynchronen Rückruf gültig ist, nachdem es verwendet wurde. Im Grunde müssen Sie also alles speichern, was Sie brauchen, in Ihrem Fall target , und dies anstelle der Ereignisvariablen direkt verwenden

@posva Haben Sie eine Dokumentation für diese Aussage? Ich glaube nicht, dass du falsch liegst, ich habe das nur noch nie zuvor gesehen oder gehört.

Ich konnte es nicht finden
Aber Sie können es hier ohne Vue sehen: https://jsbin.com/danuxohoga/1/edit?html ,js,console,output

Ich habe nach einem Ort gesucht, der eine Dokumentation der Lebensdauer von DOM-Ereignissen enthält, aber nichts gefunden. Ihr jsbin wird für Tausende das Kronenbeispiel sein, auf das Sie von SO verlinken können ;)

Im Ernst, das letzte Mal hatte ich dieses Problem in einer Hybrid-VM namens Titanium, bei der alle Elemente Java- oder Object-C-Gegenteilen zugeordnet waren und diese verschwinden würden, wenn die VM sie als ungenutzt ansieht. Ich hätte nie gedacht, dass ich es in einem Browser sehen würde. Aber heute war es soweit! :tada: 💩

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

bdedardel picture bdedardel  ·  3Kommentare

guan6 picture guan6  ·  3Kommentare

bfis picture bfis  ·  3Kommentare

paceband picture paceband  ·  3Kommentare

aviggngyv picture aviggngyv  ·  3Kommentare