Ich bin heute wieder einmal darüber gestolpert, dass man keine HTML-Entities im Javascript verwenden kann. Wer es nicht glaubt, sollte mal folgendes Beispiel (Doctype und XML-Prolog habe ich mal weggelassen.) probieren:
|
HTML
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="de"><head>
<title>test</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
window.onload = function() {
alert('"test"');
};
//]]>
</script>
</head>
<body></body>
</html>
|
Beim Aufruf der Seite wird ein Alert-Popup geöffnet, welches das Wort test in Anführungszeichen enthalten sollte. Leider steht anstelle der Anführungszeichen nur ". Etwas googlen brachte mir einen Workaround. Bei diesem wird ein textarea-Element angelegt. In dieses wird dann über innerHTML der String geschrieben. Dabei werden die Entities korrekt ausgewertet. Danach kann man sich den Inhalt der Textarea über value zurückgeben lassen - mit dem gewünschten Resultat.
|
HTML
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="de"><head>
<title>test</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
//<![CDATA[
function htmlEntityDecode(string) {
var t = document.createElement("textarea");
t.innerHTML = string;
return t.value;
}
window.onload = function() {
alert(htmlEntityDecode('"test"'));
};
//]]>
</script>
</head>
<body></body>
</html>
|