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.