Wie kann ich anhand von JavaScript feststellen, ob ein HTML-Objekt im DOM nicht im HTML-Quellcode enthalten ist?

8

Ich suche nach Ideen zur Erkennung von Objekten im HTML-DOM, die jedoch nicht explizit in der HTML-Quelle dargestellt werden.

Wie Sie vielleicht wissen, habe ich eine HTML-Quelle, die folgendes enthält:

%Vor%

... das HTML-DOM fügt das <tbody> -Objekt in der Objektbaumstruktur hinzu, ohne den Quellcode zu ändern, wobei zu beachten ist, dass der Quellcode dies beinhaltet. Im DOM ist die Struktur also so, als wäre die HTML-Quelle:

%Vor%

Ich habe eine JavaScript-Funktion, die den DOM-Baum durchläuft, und ich muss erkennen, wenn ich über ein implizites Objekt gelaufen bin, das heißt, es ist im DOM, aber nicht in der HTML-Quelle.

Irgendwelche Ideen wie man das macht? Vielleicht gibt es ein Attribut im Objekt, das angibt, ob es von der Quelle stammt oder nicht?

    
Jonathan M 18.05.2011, 15:16
quelle

3 Antworten

0

Neue Idee basiert auf Alex Idee. Es ist immer noch erforderlich, das gesamte DOM erneut abzurufen, aber es ist unmöglich, etwas anderes zu tun. Sie können diese logische Server-Seite implementieren, wenn es in Ihrer App möglich ist. Verwenden von jQuery für die Kürze:

%Vor%

, die Ihnen eine Liste aller eingefügten Elemente gibt :) Möglicherweise benötigen Sie eine Verfeinerung, z. um die Anführungszeichen, die zu class=" passen, da ein Zitat dort technisch optional ist. Auch nicht getestet, sollte aber funktionieren.

Beachten Sie, dass Sie neue -Elemente mit dieser Methode zurückerhalten, nicht die, die derzeit in Ihrem DOM vorhanden sind. Wenn dies also wichtig ist, beachten Sie sie.

    
Mark Kahn 18.05.2011, 15:42
quelle
2

Wenn Sie Ihren Kommentar lesen, müssen Sie nur feststellen, ob ein <tbody> -Tag vom Rendering-Prozess hinzugefügt wurde, anstatt in der Quelle vorhanden zu sein?

Wenn ja, warum nicht die Quelle ändern, die <tbody> enthält, indem Sie das Attribut <tbody class="exp"> anwenden, dann wissen Sie beim Durchlaufen des DOM, dass jeder tbody-Knoten, der dieses Attribut nicht besitzt, von der Rendering-Engine eingefügt wurde.

>     
Alex K. 18.05.2011 15:42
quelle
1

Darf auf dem document.body.onload der Zeichenfolge des ursprünglichen document.body.innerHTML

stehen bleiben

Wenn Sie die Überprüfung durchführen möchten, testen Sie zuerst, ob sie noch immer gleich sind.
Wenn nicht beide Strings vergleichen und die Unterschiede finden.

Ich denke, das ist in Ordnung, wenn Sie keine zu schwere Seite haben.

    
Mic 18.05.2011 15:24
quelle

Tags und Links