Valides XHTML Frameset ohne lästige Ränder (Anleitung Inside)
Christoph Schaffhauser
- meinung
Geht nicht?
Geht doch!!!
Diese Seite kann man durch den Validator bei http://www.w3.org/ jagen und bekommt ein valides XHTML Frameset...
Wie gemacht? guggt mal den source meines Framesets an ^^
Anleitung:
Ein ganz normales XHTML Frameset erstellen wie unten abgebildet. Unten das Frameset mit dem NOFRAMES tag definieren... die Frameset sind nutzlos also sind auch keine weiteren Attribute notwendig <frame/> reicht...
jetzt kommt der eigentliche Trick:
Im HEAD Tag definiert man ein JavaScript welches etwas ins dokument schreibt. mit "document.write()" wird dann die eigentliche (nicht valide aber dafür ohne lästige Ränder) Frameset reingeschrieben. Diesen Code verstecke ich vor dem validator indem ich jedes einzelne zeichen nach HEX code umrechne (z.b %20 für leerschlag) mit unescape wandelt es der Browser wieder in Text um.
Das klappt mit Internet Explorer, Opera, Netscape, Mozilla (andere hab ich ned getestet.
Hier das Beispiel
Gruss Christoph
______________________________________________________________________
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head>
<title>Dark Eagle Software</title>
<meta http-equiv="content-type" content="mime-type; charset=iso-8859-1"/>
<script type="text/javascript">
<!--
if (top!=self) top.location = self.location;
document.write(unescape("*Hier den eigentlichen Framesetsource*"));
//-->
</script>
</head>
<frameset rows="*,*">
<frame />
<frame/>
<noframes><body>nix</body></noframes>
</frameset>
</html>
______________________________________________________________________
Gruss Christoph
Geht nicht?
Geht doch!!!
Diese Seite kann man durch den Validator bei http://www.w3.org/ jagen und bekommt ein valides XHTML Frameset...
Hi,
das ist hinsichtlich der religiösen Bedeutung, die manche dem Thema beimessen, Gotteslästerung ;-)
Die Reinheit wird ja nur vorgegaukelt, ist aber zur Laufzeit nicht real existent. Mal sehen, was die fundamentalistischen Schriftgelehrten von dciwam dazu meinen *g*
Gruß: kaspar
Hi,
Morgen :-)
das ist hinsichtlich der religiösen Bedeutung, die manche dem Thema beimessen, Gotteslästerung ;-)
Ich weiss... es ist bescheissen auf Teufel komm raus... meine meinung ist: Hauptsache es kommt am Validator vorbei und funzt in allen Browsern.
Was meine methode macht --> ziel Erreicht ;-)
Die Reinheit wird ja nur vorgegaukelt, ist aber zur Laufzeit nicht real existent. Mal sehen, was die fundamentalistischen Schriftgelehrten von dciwam dazu meinen *g*
Stimmt... zudem ists sogar noch schlimmer: der browser tut zur laufzeit mein Frameset reinladen und merkt dann dass unten noch ein Frameset kommt... was er dann aber als Fehler abtut ;-) das erste Frame ist das das zählt.
Gruß: kaspar
Gruss Christoph
Tachchen!
Ich weiss... es ist bescheissen auf Teufel komm raus... meine meinung ist: Hauptsache es kommt am Validator vorbei und funzt in allen Browsern.
Tut es eben nicht, und das nimmst du ja weiter oben schon in Kauf. Es gibt durchaus Browser die wissen garnix von Javascript.
Gruß Herbalizer
Moin!
Ich weiss... es ist bescheissen auf Teufel komm raus... meine meinung ist: Hauptsache es kommt am Validator vorbei und funzt in allen Browsern.
Was meine methode macht --> ziel Erreicht ;-)
Darf ich mal fragen, wozu Du ueberhaupt was auf die Zustimmung des Validators gibst?
Stimmt... zudem ists sogar noch schlimmer: der browser tut zur laufzeit mein Frameset reinladen und merkt dann dass unten noch ein Frameset kommt... was er dann aber als Fehler abtut ;-) das erste Frame ist das das zählt.
In welchen Browsern funktioniert das?
So long
--
Invest in America - Buy a Congressman!
-- a slogan from http://www.evolvefish.com/
Hallo,
Ein ganz normales XHTML Frameset erstellen wie unten abgebildet. Unten das Frameset mit dem NOFRAMES tag definieren... die Frameset sind nutzlos also sind auch keine weiteren Attribute notwendig <frame/> reicht...
jetzt kommt der eigentliche Trick:
Im HEAD Tag definiert man ein JavaScript welches etwas ins dokument schreibt. mit "document.write()" wird dann die eigentliche (nicht valide aber dafür ohne lästige Ränder) Frameset reingeschrieben. Diesen Code verstecke ich vor dem validator indem ich jedes einzelne zeichen nach HEX code umrechne (z.b %20 für leerschlag) mit unescape wandelt es der Browser wieder in Text um.
Dann sollte man sich doch lieber zur Verwendung der nicht-validen Schreibweise bekennen und ggf. einen Kommentar in den Code einfuegen, warum man hier mal vom Standard abweicht.
Was sehen die Leute ohne aktiviertes JavaScript?
MfG, Thomas
Hi Thomas
Dann sollte man sich doch lieber zur Verwendung der nicht-validen Schreibweise bekennen und ggf. einen Kommentar in den Code einfuegen, warum man hier mal vom Standard abweicht.
Was sehen die Leute ohne aktiviertes JavaScript?
MfG, Thomas
Ohne aktiviertes JavaScript läuft meine Seite nicht. Zudem hab ich kein Interesse an Besuchern ohne aktiviertem JavaScript.. ich könnte das Frameset unten so definieren dass es eine Seite anzeigt die Surfern ohne JavaScript ne meldung zeigt "Pech halt.. geht nur mit JavaScript"
Gruss Christoph
PS: Das mit dem Kommentar ist mir zu Blöd.. da gibts zu viele leute hier im Forum die meinen eine Seite verdient das W3C logo nicht wenn das Frameset invalid ist... so können die nix mehr sagen ^^
Hallo,
Ohne aktiviertes JavaScript läuft meine Seite nicht. Zudem hab ich kein Interesse an Besuchern ohne aktiviertem JavaScript..
Hm, das ist natuerlich eine recht zweifelhafte Ansicht. Aus der Sicht von Accessability und Useability einer Seite ist das wohl nur bei sehr speziellen Sites tolerabel.
JavaScript sollte eher Zusatznutzen schaffen, aber nicht den Zugang verwehren.
PS: Das mit dem Kommentar ist mir zu Blöd.. da gibts zu viele leute hier im Forum die meinen eine Seite verdient das W3C logo nicht wenn das Frameset invalid ist... so können die nix mehr sagen ^^
Wenn Du unbedingt das W3C-Logo haben moechtest, dann sollte die Seite eben auch valide sein. Schließlich wird damit genau das dokumentiert. Da gibt's dann kein Entoder-weder!
Versuche doch mal auf Frames zu verzichten oder z. B. wie hier angedeutet zu arbeiten: </?m=86420&t=15404>.
MfG, Thomas
Hi
Hallo,
Ohne aktiviertes JavaScript läuft meine Seite nicht. Zudem hab ich kein Interesse an Besuchern ohne aktiviertem JavaScript..
Hm, das ist natuerlich eine recht zweifelhafte Ansicht. Aus der Sicht von Accessability und Useability einer Seite ist das wohl nur bei sehr speziellen Sites tolerabel.
Bei welchen? Ich biete auf meiner Seite Scripte und Programme an... JavaScripte und PHP Scripte... wenn da wer auf meine Seite kommt ohne JavaScript hatter irgend was falsch gemacht.
JavaScript sollte eher Zusatznutzen schaffen, aber nicht den Zugang verwehren.
Wenn Du unbedingt das W3C-Logo haben moechtest, dann sollte die Seite eben auch valide sein. Schließlich wird damit genau das dokumentiert. Da gibt's dann kein Entoder-weder!
Alle Seiten sind Valide ausser dem Frameset. Wenn man in das Validatorlogo clickt wird auch die gerade generierte php seite oder html seite validiert... dennhalb kann ich das logo ja auch auf jede seite haun die valid ist ^^
Versuche doch mal auf Frames zu verzichten oder z. B. wie hier angedeutet zu arbeiten: </?m=86420&t=15404>.
Frames verzichten geht nicht und die lösung wie im link ist bei meiner Seite unmöglich.
MfG, Thomas
Gruss Christoph
Hallo,
Bei welchen?
Web-Kunst vielleicht oder reine JS-Demos. Aber auch dann sind Alternativen gefragt.
Ich biete auf meiner Seite Scripte und Programme an... JavaScripte und PHP Scripte... wenn da wer auf meine Seite kommt ohne JavaScript hatter irgend was falsch gemacht.
Bei PHP-Interesse brauche ich kein JS aktiv zu haben ...
Alle Seiten sind Valide ausser dem Frameset. Wenn man in das Validatorlogo clickt wird auch die gerade generierte php seite oder html seite validiert... dennhalb kann ich das logo ja auch auf jede seite haun die valid ist ^^
Mache das doch, aber das Frameset ist doch nicht wirklich valid.
Stehe einfach dazu, ich habe damit kein Problem. Wobei ich mich andererseits bei dem genannten Projekt eben wegen der Validitaet fuer die Trennlinie entschieden habe, weil ich dort im Kontext von XML, XSLT und SVG einfach auch alle XHTML-Dokumente valid haben wollte.
MfG, Thomas
Erstmal Moin!
Geht nicht?
Geht doch!!!
Diese Seite kann man durch den Validator bei http://www.w3.org/ jagen und bekommt ein valides XHTML Frameset...
Bei der Validität geht es keinesfalls darum, vom Validator ein OK zu kriegen, sondern darum, ordentlichen (X)HTML-Code zu produzieren - egal, mit welchen Mitteln.
Dein Trick ist Betrug und zählt nicht.
Angenommen, in einer Welt würde es Regeln für gültige Briefe und Briefumschläge geben. Dann hättest du einen gültigen Briefumschlag - der Inhalt des Umschlags wird aber garnicht geprüft, obwohl der enthaltene Brief ungültig ist. Du darfst dich deshalb nicht wundern, wenn dein Brief bei manchem Leser auf Unverständnis stößt. Hättest du gleich den Brief auf Gültigkeit prüfen lassen und erst dann in den Umschlag gesteckt, würde sowas nicht passieren.
Abgesehen davon hat dein Trick zwei Fehler - einen grundsätzlichen, und einen praktischen:
1. Grundsätzlich ist es immer sehr problematisch, wenn man sich relevante Teile einer Seite per Javascript erstellen läßt. Das kann ins Auge gehen und setzt nur unnötig die Anforderungen an den User-Agent hoch. Es gibt Leute, die Javascript ausgeschaltet haben. Und es ist anzustreben, eine Seite möglichst ohne Javascript funktionieren zu lassen, wenn auch nicht mit den letzten optischen Features.
2. Ganz praktisch gesehen erzeugt deine Lösung falsches HTML. Du schreibst das JS-Frameset noch innerhalb vom <HEAD> - da gehört es aber absolut nicht hin. Dummerweise kann das kein Validator bemerken - außer man kopiert den entstandenen Quelltext aus der Netscape-Quelltextansicht und läßt diesen validieren. Ich möchte nicht wissen, was da dann gemeckert wird.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head>
<title>Dark Eagle Software</title>
<meta http-equiv="content-type" content="mime-type; charset=iso-8859-1"/>
<script type="text/javascript">
<!--
if (top!=self) top.location = self.location;
document.write(unescape("*Hier den eigentlichen Framesetsource*"));
//-->
</script>
</head>
<frameset rows="*,*">
<frame />
<frame/>
<noframes><body>nix</body></noframes>
</frameset>
</html>
»»
Ganz grundsätzlich ist festzuhalten:
1. Tricks in Javascript, die Validität vortäuschen, sind dumm, weil sie Fehler maskieren, die schwerwiegend sein können.
2. Es ist allgemein anerkannt, daß man funktionierende und ordentlich aussehende Framesetdefinitionen nicht valide machen kann, weil die Browser andere, unerlaubte Angaben erfordern als der Standard vorsieht. Ein Tricksen in dieser Richtung ist deshalb vollkommen überflüssig.
- Sven Rautenberg
Hi Sven
Bei der Validität geht es keinesfalls darum, vom Validator ein OK zu kriegen, sondern darum, ordentlichen (X)HTML-Code zu produzieren - egal, mit welchen Mitteln.
Wie Du auf meiner Seite feststellen kannst sind sämtliche php und html dokumente XHTML konform valid ohne beschiss... das einzige was gestört hat war das Frameset welches UNMÖGLICH valid sein kann wenn man auf die weissen balken verzichten möchte.
Einige hier im Forum sind der Meinung eine Seite verdient dass W3C Valid logo nicht wenn das Frameset invalid ist. Was hier geschied ist Grauzone und interpretatiosnsache. Streng genommen IST das Frameset VALID weil es vom Parser IMMER als valid angenommen wird. Was jedoch auch stimmt ist, dass es zur Laufzeit Invalid wird. Das File ist als solches Valid aber nicht zur Laufzeit. Wie bewertet man denn nun ein valid HTML file? ist es valid wenn es in seiner ursprünglichen Form ist oder wenn es ausgefürt wird? wann wird das bestimmt? Ich denke eher in seiner ursprünglichen Form...
Dein Trick ist Betrug und zählt nicht.
Betrug? Ja sicher aber das File is in seiner Ursprungsform Valid. Desshalb darf man dem File das Siegel Valid verpassen.
Angenommen, in einer Welt würde es Regeln für gültige Briefe und Briefumschläge geben. Dann hättest du einen gültigen Briefumschlag - der Inhalt des Umschlags wird aber garnicht geprüft, obwohl der enthaltene Brief ungültig ist. Du darfst dich deshalb nicht wundern, wenn dein Brief bei manchem Leser auf Unverständnis stößt. Hättest du gleich den Brief auf Gültigkeit prüfen lassen und erst dann in den Umschlag gesteckt, würde sowas nicht passieren.
So kann man das ned vergleichen. Es ist mehr in einer Welt in der man den Brief schreibt jemand schaut ihn an ob er legal ist und kommt zum schluss ja. Jetzt gibt man den Brief an den Empfänger und dieser überschreibt den Brief und streicht einige passagen. Desshalb wird der Brief noch 1000 mal beim Prüfamt vorbeigehen und jedesmal legal sein, weil erst der Empfänger drin rumkritzelt...
Abgesehen davon hat dein Trick zwei Fehler - einen grundsätzlichen, und einen praktischen:
- Grundsätzlich ist es immer sehr problematisch, wenn man sich relevante Teile einer Seite per Javascript erstellen läßt. Das kann ins Auge gehen und setzt nur unnötig die Anforderungen an den User-Agent hoch. Es gibt Leute, die Javascript ausgeschaltet haben. Und es ist anzustreben, eine Seite möglichst ohne Javascript funktionieren zu lassen, wenn auch nicht mit den letzten optischen Features.
In diesem Fall nicht, da hier die Interne Fehlerbeseitigung der Browser in Kraft tritt. Alle Heutigen Broswer merken dass man "versehentlich" ein zweites frameset definiert hat und einen 2. head (head ist auch im script vercoded und darum kein fehler erst das zweite head ist falsch)
- Ganz praktisch gesehen erzeugt deine Lösung falsches HTML. Du schreibst das JS-Frameset noch innerhalb vom <HEAD> - da gehört es aber absolut nicht hin. Dummerweise kann das kein Validator bemerken - außer man kopiert den entstandenen Quelltext aus der Netscape-Quelltextansicht und läßt diesen validieren. Ich möchte nicht wissen, was da dann gemeckert wird.
Zeigt Netscape den Quelltext richtig an nachdem document write was reinschreibt?
Ganz grundsätzlich ist festzuhalten:
- Tricks in Javascript, die Validität vortäuschen, sind dumm, weil sie Fehler maskieren, die schwerwiegend sein können.
Sind sie in dem Fall jedoch nicht. Es sind Fehler die ohne probleme von allen browsern erkannt werden.
- Es ist allgemein anerkannt, daß man funktionierende und ordentlich aussehende Framesetdefinitionen nicht valide machen kann, weil die Browser andere, unerlaubte Angaben erfordern als der Standard vorsieht. Ein Tricksen in dieser Richtung ist deshalb vollkommen überflüssig.
Dennoch gibts genug Trüffel die rummotzen wenn ein frameset nicht valide ist. Das war mir zu blöd :-)
- Sven Rautenberg
Gruss Christoph
Hi!
In diesem Fall nicht, da hier die Interne Fehlerbeseitigung der Browser in Kraft tritt.
Da würd ich mich in Zukunft nicht mehr drauf verlassen. Produzenten von Browsern für Handhelddevices werden hoffentlich die zur Verfügung stehenden Resourcen für was besseres als Fehlerbereinigung nutzen.
Gruß Herbalizer
Tach!
Wie bewertet man denn nun ein valid HTML file? ist es valid wenn es in seiner ursprünglichen Form ist oder wenn es ausgefürt wird? wann wird das bestimmt? Ich denke eher in seiner ursprünglichen Form...
Uralte Antwort auf uralte Frage: Sowohl als auch. *gaehn*
Siehe auch Forumsarchiv.
So long
--
Erfahrung heißt gar nichts. Man kann seine Sache auch 35 Jahre schlecht machen.
-- Kurt Tucholsky, deutscher Schriftsteller/Satiriker, 1890 - 1935
Hi Christoph,
und immer mal wieder ab und an ins Archiv schauen, z.B. auf: http://forum.de.selfhtml.org/archiv/2000_2/t12092.htm#a61965
Grüße,
Utz
jetzt kommt der eigentliche Trick:
Im HEAD Tag definiert man ein JavaScript welches etwas ins dokument schreibt. mit "document.write()" wird dann die eigentliche (nicht valide aber dafür ohne lästige Ränder) Frameset reingeschrieben. Diesen Code verstecke ich vor dem validator indem ich jedes einzelne zeichen nach HEX code umrechne (z.b %20 für leerschlag) mit unescape wandelt es der Browser wieder in Text um.
Ja ist denn schon Fasching :-)
So was lustiges habe ich ja schon lange nicht mehr gesehen, da vera... sich wohl einer selber, oder?!
Hi Christoph,
dieser 'Trick' mag zwar funktionieren, sinnvoll ist er IMHO jedoch nicht. Valide Seiten zu erstellen ist gut, gegen XHTML strict oder 1.1 zu validieren noch besser. Aber es steckt schon mehr dahinter, als nur durch den Validator zu kommen. Für mich bedeutet Validität auch eine Einstellung, die keine Frames zulässt. Geschmacksache eben. Wenn du denen, die deswegen berechtigterweise lästern blinden Gehorsam gegenüber dem W3C unterstellst, so ist das nicht richtig. Schließlich bist du es, der um jeden Preis valide Seiten haben will...
Für mich fällt diese Methode in die selbe Preisklasse wie das hier: [
link:http://msdn.microsoft.com/workshop/author/dhtml/overview/ccomment_ovw.asp] *schauder*
Im Endeffekt ist mir das aber ehrlich gesagt alles egal, denn ich bekomme ja ohnehin keinen Zutritt zu deiner Seite (JS deaktiviert). Nein, ich beschwere mich keineswegs. Du willst mich nicht haben - das ist dein Problem. Ich bin nämlich keineswegs auf deine Site angewiesen. ;)
LG Orlando
--
SELF-TREFFEN 2002
http://www.rtbg.de/selftreffen/
http://www.megpalffy.org/temp/penneninhh.html
Hallo,
ich verstehe den Sinn des Tricks nicht. Schreibe doch die Seite, die Du dem besucher anbieten möchtest. Was ein Computerprogram, der die Seite sich durchliest und ein valide oder nicht-valide auf Deinen bildschirm schreibt, dazu sagt, ist doch nun wirklich (erstmal) vollkommen wurscht. Entweder Du möchtest valide Seite ausliefern(!), dann kann man das Program von w3.org zu Testzwecken nehmen, aber so viel Aufwand, um dieses Program auszutricksen? Dann behelige es doch einfach nicht und schreib Deine Seite "unvalide".... Das Program bei w3.org ist ein Werkzeug, daß man freiwillig einsetzen kann. (Und was ich schätzen lerne) - aber kein Selbstzweck, wie ein Spiel, bei dem man mit Chat-Codes den letzten level erreicht....
So wirkt es nicht wirklich erwachsen....
Chräcker
http://www.Stempelgeheimnis.de
--
SELF-TREFFEN 2002
http://www.rtbg.de/selftreffen/
http://www.megpalffy.org/temp/penneninhh.html
[...]
Geht nicht?
Da ich mich nicht sprachlich über deine sardonischen Witzeleien echauffieren wollte...
<img src="http://home.t-online.de/home/dj5nu/nix.jpg" border=0 alt="">
("nix")
/* no comment */ Vielleicht verstehst du, was ich dir sagen möchte. Missinterpretationen erwünscht.
Immer dieser Ärger mit den verfassungsfeindlichen Symbolen.
-mvdl