| 

.NET C# Java Javascript Exception

0
Wie kann ich einen beliebigen String in eine Javascript-Variable übertragen?

var test = '<%= html %>';

Das macht natürlich Probleme, sobald die Variable html Anführungszeichen enthält. Vermutlich machen aber noch andere Zeichen Probleme, von denen ich jetzt nur nichts weiß. Gibt es eine Funktion JavascriptEncode oder wie regelt man das?
News:
07.09.2009
asimov 1 1 1
2 Antworten
4
string jshtml = html.Replace("'", @"\'");


Es müssen doch nur die single quotes JavaScript-konform escaped werden, oder versteh ich da was falsch?
07.09.2009
Tomalak 171 1 2
Tomalak 171 1 2
Sind das denn auch definitiv alle Zeichen? Ist das so auch sicher?
asimov 07.09.2009
Ja. Das einzige Zeichen, was nicht in einem JS-String vorkommen darf, ist der jeweilige Stringbegrenzer - ein single quote in deinem Fall. Alles andere ist erlaubt, außer NULL - aber dazu wird es auch wahrscheinlich nicht kommen. ;-)
Tomalak 07.09.2009
P.S.: Ob oder ob nicht Unicode-Zeichen erkannt werden, hängt vom Character Encoding der Daten ab, die beim Browser landen. Wenn die daten UTF-8-kodiert sind, und im HTTP-Header auch so deklariert sind, dann ist auch literales Unicode kein Problem.
Tomalak 07.09.2009
0
In Javascript gibt es eine escape('string') Methode bzw. eine unescape() Methode ;-)
var test = '<%= html %>';
var out = escape(test);


Alternativ kann man auch nur bestimmte Zeichen ersetzen, allerdings ist man dann immer unsicher ob man alle Zeichen erstetzt hat, so dass keine Fehler auftreten.

Also was möchtest du? Code lesbar und evtl. nicht funktionierend oder Code nicht unbedingt immer lesbar aber dafür funktionierend ?
Viel Spaß
07.09.2009
Scout 1,4k 2 8
Scout 1,4k 2 8
1
Das ist richtig, hat aber mit dem Problem nichts zu tun. ;-)
Tomalak 07.09.2009
@tomalak: Im Endeffekt läuft es auf "Escaping" hinaus... ob man nun einzelne Zeichen ersetzt oder die escaping Funktion nimmt ist egal. Beim ersetzen bleibt jedoch der Code evtl. lesbarer, während beim escaping auch alle anderen Zeichen mit escapt werden.
Ist Geschmackssache.
Scout 07.09.2009
1
Es geht hier aber nicht um JavaScript, sondern um die *Erzeugung* von JavaScript mittels ASP.NET. Welche Funcktionen JavaScript selbst anbietet ist komplett irrelevant.
Tomalak 07.09.2009

Stelle deine .net-Frage jetzt!