Tach!
Ebene 1: write(
'<p ...Ebene 2: href=
"javascript ...Ebene 3: javascript:setCookie(
"my_ORT ...Maskierung auf Ebene 3
\"zeigt keine Wirkung.
In Ebene 1 beginnt mit ' ein String. Das " darin wird nicht weiter beachtet. Das \" hingegen wird zu " aufgelöst. Das write() schreibt das also beides als ".
Wie sieht die Lösung aus?
Zum Beispiel \' verwenden, dann wird das von Ebene 1 zu ' aufgelöst, womit du dann " und ' in der Ausgabe stehen hast.
Oder du maskiert sowohl das " als auch den \ davor, was dann zu \\\" wird.
Zusatzfrage: Wann interpretiert Javascript einen String-Inhalt? Wie bei PHP, wenn der String in
"statt'eingeschlossen ist?
Javascript unterscheidet nicht zwischen beiden Zeichen. Sie sind gleichwertig.
Dann wäre hier
</a>ebenso okay wie<\/a>, weil JS NICHT interpretiert?
Das ist ein maskierter /, was problemlos ist, aber unnötig. Lediglich bei einem </script>, das literal in einem Javascript-String steht, muss man escapen, weil sonst der HTML-Parser an der Stelle den Script-Block beendet.
dedlfix.