dedlfix: Anführungszeichen schachteln, 3 Ebenen

Beitrag lesen

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.