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?
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. ;-)
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.
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ß
@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.
Es geht hier aber nicht um JavaScript, sondern um die *Erzeugung* von JavaScript mittels ASP.NET. Welche Funcktionen JavaScript selbst anbietet ist komplett irrelevant.