Mit HTML-tags im JavaScript-strings-unter Einhaltung der W3C-Regeln
Hier ist mein code:
<a href="#">
<img src="myimage.jpg"
onmouseover="showDescription(
'Text', 'Text with HTML tags in them<br />More text');"
onmouseout="revertDescription();"
alt="Image description">
Den W3C-Markup-Validator nicht mag. Er will nicht die HTML-tags in meinem JavaScript-code. Hier ist die Fehlermeldung produziert, wenn ich Versuch dies:
Zeichen "<" ist das erste Zeichen ein Begrenzungszeichen ist aber aufgetreten, als Daten
Wie kann ich dieses Problem beheben und gleichzeitig sichergestellt, dass meine Seite nicht versauen, wenn ich übergeben Sie die HTML-Tags mit Zeichenfolge zu document.getElementById('myElement').innerHTML
?
InformationsquelleAutor Pieter | 2009-11-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie mit alle Attribut-Werte müssen Sie HTML-codieren
&
,<
, und das Attribut Trennzeichen ("
hier). Die Tatsache, dass es JavaScript in die Attribut-Wert macht keinen Unterschied: das HTML-Attribut-Wert dekodiert wird, bevor JavaScript bekommt einen Blick auf Sie.Dies ist im Gegensatz zu einem
<script>
- element, dessen InhaltCDATA
und somit nicht&
-entkam in HTML4. In XHTML gibt es keine CDATA-Elementen; Sie können hinzufügen eine<![CDATA[
Abschnitt, um XHTML Verhalten sich genauso, aber es ist in der Regel einfacher für die beiden script-Elemente und event-handler-Attribute nur das problem vermeiden, indem Sie nie mit einer&
oder<
Charakter. In einem string-literal-eine weitere Flucht zur Verfügung, die Sie verwenden können, um dies zu umgehen:InformationsquelleAutor bobince
Könnten Sie wickeln Ihre Funktionen in separaten
<script>...</script>
- tags irgendwo im Dokument, und es verwenden ...Vom http://javascript.about.com/library/blxhtml.htm:
InformationsquelleAutor miku
Es gibt viele Möglichkeiten, um dorthin zu gelangen.
<
oder<
statt<
Verwenden
>
oder>
statt>
document.getElementById("image1").onmouseover = showDescription(
'Text', 'Text with HTML tags in them<br />More text');
Hoffe, das funktioniert.
InformationsquelleAutor ricky
Ersetzen
<
durch%3C
und>
durch%3E
und verwenden, unescape, wenn er den Inhalt.Dieser nicht Valide ist:
Dieser gibt die gleichen Ergebnisse und bestätigt:
InformationsquelleAutor Claude Schlesser
Wie Sie darum, dies innerhalb eines <script ...> block:
Später in Ihre HTML:
<
und>
im inneren.Nicht, wenn Sie wickeln Sie dort Ihren code mit //<![CDATA[... //]]> wie vorgeschlagen, durch Die MYYN. Ich schlug vor, dass diese Herangehensweise, da Sie nicht definieren, inline-Skript-Befehle, die als CDATA -
InformationsquelleAutor synhershko