Rolf B: String per JS effizient splitten

Beitrag lesen

Hallo heinetz,

die jQuery-Methode lädt ein HTML Fragment und extrahiert dann daraus einen Container. Wie sie das macht, steht auf api.jquery.com:

jQuery uses the browser's .innerHTML property to parse the retrieved document and insert it into the current document. During this process, browsers often filter elements from the document such as <html>, <title>, or <head> elements. As a result, the elements retrieved by .load() may not be exactly the same as if the document were retrieved directly by the browser.

Man müsste sich den jquery sourcecode anschauen um zu sehen wie sie es genau machen, aber ICH würde so vorgehen:

  • html als text vom server holen
  • mit createDocumentFragment ein DocumentFragment erzeugen
  • darin ein div anlegen (weil das DocumentFragment kein innerHTML hat)
  • dem innerHTML des div das geladene html zuweisen
  • in dem div mit querySelector den gewünschten Container lokalisieren
  • den clonen und den Klon im eigenen DOM einsetzen

Damit nutzt Du soweit es möglich ist nativen Browsercode. Wie jQuery das macht, weiß ich nicht, die wollen ja auch alte Browser supporten die kein DocumentFragment kennen; ich mutmaße mal, dass jQuery dafür ein verstecktes Dummy-div ins DOM legt und das geladene HTML temporär darin unterbringt.

Rolf

--
sumpsi - posui - clusi