Javascript - mit innerHTML Strings ausgeben * OHNE * HTML-codierte Sonderzeichen?

8

Es scheint, dass JavaScript bestimmte Sonderzeichen automatisch in HTML-Elemente konvertiert, wenn Inhalte über die Funktion innerHTML () ausgegeben werden. Dies ist ein Problem, da ich & lt; und & gt; ohne Umwandlung in GT; und lt;

Kann diese automatische Konvertierung verhindert, rückgängig gemacht oder ausgeführt werden? Bis jetzt, egal was ich mache, & lt; und & gt; werden immer automatisch in HTML-Entities kodiert.

Beispielcode:

%Vor%

Beispiel für eine Abfragevariable:

%Vor%     
ClairelyClaire 06.04.2011, 17:48
quelle

4 Antworten

0

Ich habe herausgefunden, was vor sich geht. Es gibt keine einfache Möglichkeit, zu verhindern, dass innerHTML Sonderzeichen in HTML-Entitäten umwandelt, aber das Problem taucht auf, wenn der Inhalt eines DIV in die Zwischenablage kopiert wird (nur IE-JS) Um IE zu verwenden), habe ich nur die replace () -Funktion verwendet, um die HTML-Entitäten wieder in & lt; und & gt;.

    
ClairelyClaire 06.04.2011, 20:39
quelle
1

Ich denke, Ihre Frage basiert auf einer falschen Prämisse. Mach einfach einen sehr einfachen Test:

%Vor%

Wenn das funktioniert, dann ist das Problem nicht auf der JS-Seite, stattdessen verwenden Sie einige andere Komponenten in Ihrem System, die Ihre Zeichen HTML-codieren.

    
vbence 06.04.2011 17:52
quelle
1

Sie sollten sich auf das konzentrieren, was Sie als Ergebnis erreichen wollen, und nicht auf die Art, dies zu tun. innerHTML () codiert, innerText () und textContent () codieren ebenfalls. Also sollten Sie Ihre Strings dekodieren, wenn Sie sie als & lt; oder & gt; zurück.

Sie können diese Funktion unescapeHTML () verwenden, um die gewünschten Ergebnisse zu erhalten.

%Vor%

Ich hoffe, das hilft. Ich habe es von Prototype kopiert.

    
celiker 06.04.2011 18:24
quelle
-2

Sie können jquery und .append()

verwenden     
Jeremy Umansky 15.06.2012 16:20
quelle

Tags und Links