XHTML und document.write
Freddy Feuerstein
- xml
Hallo Forum,
ich habe Mecker vom W3C-Validator bekommen, weil ich in einer XHTML-Seite folgendes einsetzen wollte:
<script type="text/javascript">
document.write('<img id="baeumchenwechseldich" src="eins.jpg" ... >');
bilder_wechsel_script();
</script>
<noscript>
<iframe src="metarefreshbilder.php" ... >...</iframe>
</noscript>
document.write ist nicht erlaubt in XHTML, siehe [URL:http://www.w3.org/MarkUp/2004/xhtml-faq.html#docwrite]
Da steht auch, dass man das gleiche Ergebnis erzielen kann, ohne document.write, wenn man das DOM benutzt. Hui. Ich nix Javascript, leider. Kann mir jemand einen Tip/Link zeigen was da gemeint ist?
Gruß,
FF
bilder_wechsel_script();
frohe Ostern erstmal
vieleicht liegts am _script lass das mal weg dann ist das eben
bilder_wechsel
probieren
bilder_wechsel_script();
frohe Ostern erstmal
() () () auch so, ;-)
vieleicht liegts am _script lass das mal weg dann ist das eben
bilder_wechsel
Nein, nein, es liegt daran das man keine childelemente im scriptbereich haben darf, also das <img Tag.
Genauso wenig geht <p> oder irgendein anderer HTML-Tag.
Man kann/soll document.write nicht verwenden.
(Obwohl es zumindest im Firefox und IE funktioniert, ist es nicht valide) Der genaue Mecker ist, (sorry, habe ich eben vergessen):
- document type does not allow element "img" here. -
Gruß,
FF
Moin!
So, jetzt lege ich dir mal ein kleines Ei ins Nest ;-)
Nein, nein, es liegt daran das man keine childelemente im scriptbereich haben darf, also das <img Tag.
Genauso wenig geht <p> oder irgendein anderer HTML-Tag.
Du verwendest XHTML, also einen XML-Dialekt. Hast du dir mal überlegt, was ein XML-Parser in deinem Script-Code sieht:
<script type="text/javascript">
document.write('<img id="baeumchenwechseldich" src="eins.jpg" ... >');
bilder_wechsel_script();
</script>
Genau, nach einem (nicht maskierten) Apostroph beginnt ein img-Tag, der zudem noch nicht geschlossen ist, abgesehen von unmaskierten Anführungszeichen. Vielleicht solltest du eine andere Notation probieren:
<script type="text/javascript">
document.write('<img id="baeumchenwechseldich" src="eins.jpg" ... />');
bilder_wechsel_script();
</script>
oder bequemer:
<script type="text/javascript">
/*<!CDATA[*/
document.write('<img id="baeumchenwechseldich" src="eins.jpg" ... >');
bilder_wechsel_script();
/*]]>*/
</script>
Man kann/soll document.write nicht verwenden.
Vielleicht aus <http://de.selfhtml.org/html/xhtml/unterschiede.htm#script_style@title=diesem Grund>.
[…] Der genaue Mecker ist, (sorry, habe ich eben vergessen):
- document type does not allow element "img" here. -
Sagt ich doch.
Frohe Ostern,
Robert
Hallo Robert,
So, jetzt lege ich dir mal ein kleines Ei ins Nest ;-)
(Überraschung)
Du verwendest XHTML, also einen XML-Dialekt. Hast du dir mal überlegt, was ein XML-Parser in deinem Script-Code sieht:
[...]
Genau, nach einem (nicht maskierten) Apostroph beginnt ein img-Tag, der zudem noch nicht geschlossen ist, abgesehen von unmaskierten Anführungszeichen. Vielleicht solltest du eine andere Notation probieren:
[...]
oder bequemer:
<script type="text/javascript">
/<!CDATA[/
document.write('<img id="baeumchenwechseldich" src="eins.jpg" ... >');
bilder_wechsel_script();
/]]>/
</script>
Ja, das ist es was mir fehlte.
> Vielleicht aus <http://de.selfhtml.org/html/xhtml/unterschiede.htm#script_style@title=diesem Grund>.
Ja, und das ist der mir fehlende Link zum Thema, (und nicht Javascript lernen).
> Frohe Ostern,
Super, es waren sogar zwei ()er im Nest.
Danke,
FF
Hallo Fred,
Ja, und das ist der mir fehlende Link zum Thema, (und nicht Javascript lernen).
Ich denke, Du willst doch dazulernen, dann liefere Dein Dokument nun doch mal als application/xhtml+xml aus, damit es beim Browser auch richtig (als XML - XHTML ist nämlich ein XML-Derivat) und nicht als HTML ankommt.
Und was lernst Du dann?
Verzicht auf document.write!
Mach also von vornherein alles richtig (ohne document.write), dann hast Du später weniger Probleme.
Gruß
Barnie
Moin!
Ich denke, Du willst doch dazulernen, dann liefere Dein Dokument nun doch mal als application/xhtml+xml aus, damit es beim Browser auch richtig (als XML - XHTML ist nämlich ein XML-Derivat) und nicht als HTML ankommt.
Du hast noch die XML-Präambel <?xml version="1.0" … ?>
vergessen.
Und was lernst Du dann?
Dass du einen anderen Browser als den MSIE benutzen möchtest: Dokumente des Typs application/xhtml+xml bietet er dir zum Download an, HTML-Dokumente mit XML-Präambel schicken ihn in den Quirks-Modus.
Verzicht auf document.write!
Verzichte auf den Microsoft Internet Explorer ;-)
Frohe Ostern,
Robert
Hallo,
Dass du einen anderen Browser als den MSIE benutzen möchtest: Dokumente des Typs application/xhtml+xml bietet er dir zum Download an, HTML-Dokumente mit XML-Präambel schicken ihn in den Quirks-Modus.
[...]
Verzichte auf den Microsoft Internet Explorer ;-)
Genau. Das tue ich wo ich nur kann.
(Ausnahmen: A) testen meiner Webseite ob's halbwegs akzeptabel angezeigt wird, B) Windowsupdates)
Gruß,
FF
Hi Barnie,
Ich denke, Du willst doch dazulernen, dann liefere Dein Dokument nun doch mal als application/xhtml+xml aus, damit es beim Browser auch richtig (als XML - XHTML ist nämlich ein XML-Derivat) und nicht als HTML ankommt.
Habe ich nicht geagt, das mit dem dazulernen. Ich wollte nur dieses eine Dokument valide als XML-Derivat XHTML erstellen. Und zwar ausdrücklich _mit_ document.write()-Zeile!
Und was lernst Du dann?
Verzicht auf document.write!
s.o.
Mach also von vornherein alles richtig (ohne document.write), dann hast Du später weniger Probleme.
Was heißt in dem Zusammenhang richtig / falsch?
Wenn Du mir eine Möglichkeit nennen kannst mit der ich die Ausführbarkeit von Javascript testen kann und bei negativer Feststellung alternativ eine Datei per Iframe in die Seite laden kann, verzichte ich gerne auf document.write() und nehme auch irgendwelche anderen DocTypes oder was auch immer dafür.
Wenn nicht, dann bin ich so wie es jetzt ist sehr zufrieden, und werde den Teufel tun, an der Datei noch was zu ändern.
<?xml version="1.0" encoding="windows-1252"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>blabla</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1252" />
<meta http-equiv="content-language" content="de" />
<meta name="language" content="de" />
Und was der IE damit macht ist mir auch ziemlich schnurze, hauptsache die Leute, die die Seite damit aufrufen können das Wesentliche sehen. Wenn's nicht so chick ist wie mit 'nem richtigen Browser, daran sind die selbst Schuld. Aber sehen sollen sie schon was.
Gruß,
FF
PS: Wenn ich mich jetzt noch oute, das ich auch noch ein "AJAX-Derivat" einsetze, prasselts bestimmt, ;-)
Der Ajax-Kram ist aber nur alternativ eingebunden, sprich die Seite funktioniert auch komplett ohne JavaScript. (s.o. die Lösung mit document.write) =:)
Hi,
Genau, nach einem (nicht maskierten) Apostroph beginnt ein img-Tag,
Warum erwähnst Du, daß der Apostroph unmaskiert ist?
Dann müßtest Du auch erwähnen, daß die Klammer direkt davor auch unmaskiert ist.
cu,
Andreas
Moin!
Warum erwähnst Du, daß der Apostroph unmaskiert ist?
Dann müßtest Du auch erwähnen, daß die Klammer direkt davor auch unmaskiert ist.
Wieso die Klammer? Im Selfhtml-Abschnitt http://de.selfhtml.org/xml/index.htm@title=XML/DTDs: <http://de.selfhtml.org/xml/regeln/index.htm@title=Regeln für XML-Dateien>: <http://de.selfhtml.org/xml/regeln/zeichen.htm@title=Zeichen, Zeichenkodierungen und nicht interpretierte Abschnitte> steht:
In XML gilt wie in HTML: Zeichen, die bei der XML-Syntax besondere Bedeutung haben, müssen Sie umschreiben, wenn Sie sie im normalen Text zwischen den Tags verwenden wollen. Folgende Zeichen sind betroffen:
Zeichen Notation in XML
< <
> >
& &
" "
' '
Die einzigen Klammern, die hier erwähnt werden, sind spitz. Oder muss man Apostroph sowie Anführungszeichen nur in Attributwerten maskieren?
Frohe Ostern,
Robert
Hi,
Die einzigen Klammern, die hier erwähnt werden, sind spitz. Oder muss man Apostroph sowie Anführungszeichen nur in Attributwerten maskieren?
Ich wüßte keinen Grund, ein ' oder ein " außerhalb von damit eingeschlossenen Attributwerten durch ' bzw. " zu ersetzen.
Daher mein Vergleich mit der Klammer ( - an der Position, an der sich das ' befindet, muß es genausowenig ersetzt werden wie die Klammer davor ...
Im XML-Standard werden ' und " an genau einer Stelle erwähnt, Zitat aus http://www.w3.org/TR/REC-xml/#syntax:
To allow attribute values to contain both single and double quotes, the apostrophe or single-quote character (') may be represented as "'", and the double-quote character (") as """.
Ich denke, daß die von Dir zitierte Stelle aus SelfHTML falsch ist (hab jetzt aber keine Lust, genauer nachzuforschen)
(was an diesem Posting - ohne den Inhalt dieser Klammer - unsauber sein soll, ist mir nicht ganz klar)
cu,
Andreas
Hallo Fred Feuerstein
document.write ist nicht erlaubt in XHTML, siehe [URL:http://www.w3.org/MarkUp/2004/xhtml-faq.html#docwrite]
Du solltest tatsächlich kein document.write benutzen.
Hättest Du Dein Dukument ricztig als application/xhtml+xml ausgeliefert und nicht als text/html, dann hätte es keines Validators bedurft um festzustellen, daß dies nicht geht.
Es bleibt Dir wohl nichts anderes überig, als daß Du Dich eingehend mit Javascript beschäftigst.
Für den Einstieg und gelegentliches Nachschlagen, denke ich, ist SELFHTML durchaus geeignet.
Gruß
Barnie Geröllheimer
Hi Barnie, alter Freund,
Es bleibt Dir wohl nichts anderes überig, als daß Du Dich eingehend mit Javascript beschäftigst.
Naja, _nichts_ ist vielleicht ein bißchen zu ausschließlich als das es war sein könnte.
Für den Einstieg und gelegentliches Nachschlagen, denke ich, ist SELFHTML durchaus geeignet.
Das ist mithin eine der besten Empfehlungen die Du geben konntest. (:)=
Gruß,
FF