Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 69e526ee

Von Moritz Bunkus vor mehr als 7 Jahren hinzugefügt

  • ID 69e526ee5cfc3d153f738083b397a000c00c4468
  • Vorgänger 56913208
  • Nachfolger a6ed938f

Dateimanagement: Stammdaten: DOM-Elemente bei multiples Tab-Aufrufen nicht duplizieren

Der Aufruf des Tabs »Dateianhänge« in den Artikelstammdaten liefert
einen Tab aus, in dem der HTML-Code für den Umbenennen-Dialog
vorhanden ist (initial versteckt). Ruft man den Dialog dann auf, so
verschieb jQuery den in dem Moment im DOM an eine ganz andere
Stelle (an den Ende vom <body>), sodass der Dialog-Code nun nicht mehr
innerhalb des <div> liegt, das für den Tab geladen wurde.

Wechselt man nur zu einem anderen Tab und ruft den Tab »Dateianhänge«
erneut auf, so wird die bisherige <div> für den Tab entfernt und neu
geladen. Beim Neuladen wird natürlich auch wieder eine Kopie des
HTML-Codes für den Dialog mitgeschickt.

Die erste Kopie befindet sich zu dem Zeitpunkt aber weiterhin im DOM,
weil sie ja kein Kind des ursprünglichen Tab-<div>s mehr ist. Somit
haben wir nun zwei Kopien des HTML-Codes im DOM.

Das führt dazu, dass auch die Inputs doppelt vorhanden sind. Es wird
dann die falsche Input (nicht die, die der Benutzer*in angezeigt wird)
an den Server geschickt.

Der Fix sorgt dafür, dass der Dialog beim Schließen wieder an seine
ursprüngliche Stelle im DOM verschoben wird. Dadurch wird der beim
Neuladen des Tabs zusammen mit dem alten Tab-<div> sauber entfernt.

  • hinzugefügt
  • geändert
  • kopiert
  • umbenannt
  • gelöscht