molily: Meine Homepage

Beitrag lesen

Hallo, Alexander,

Von meiner Seite gibt es quasi zwei Versionen: Eine mit Frames und Javascript für den normalen Surfer, und eine ohne Frames und ohne Javascript als Suchmaschinenfutter und für paranoide Surfer (sorry!).

Mit Paranoia hat das absolut gar nichts zu tun. Allein zum Abschalten von Frames gibt es viele Gründe, </archiv/2003/1/34680/#m189835>, und das Deaktivieren von JavaScript ist ein Schutzmechanismen, weil viele Seiten JavaScript missbrauchen, </archiv/2003/1/36614/#m200687>, und Browser oft Sicherheitslücken in der JavaScript-Implementation haben.
Dein Begriff »Sicherheitsfanatiker« geht deshalb m.E. soweit an der Realität vorbei, wie es nur möglich ist; das ist nichts als eine urban legend.

Dort im head gibst du mit document.write Frameset-Code aus, der aber keinesfalls in den head darf.

Aber auch nicht in den Body.

Natürlich nicht - ein Frameset-Dokument hat in der Regel kein body-Element, welches nach dem head-Element folgt. Ein Frameset-Dokument kann höchstens ein body-Element im noframes-Element im frameset-Element enthalten: <!ENTITY % noframes.content "(BODY) -(NOFRAMES)">.
http://www.w3.org/TR/html401/present/frames.html#h-16.1 zeigt, wie ein Frameset aufgebaut sein sollte, du musst folglich das frameset-Element *nach* dem head-Element ausgeben. In diesem Frameset-Element muss ein noframes-Element enthalten sein, welches dann die Alternativinformationen enthält, welche du vermutlich auch noch in ein noscript-Element betten müsstest.

Wie du das in jedem Fall passend hinbekommen beziehungsweise jedem gerecht werden willst, ist mir unklar (wenn Frames ausgeschaltet sind und JavaScript an, landet dein Besucher beziehungsweise du auf der Nase, siehe obiger Thread).

Dort, wo eigentlich das Frameset und darin ein noframe-Element gehört, gibt es bei dir nur ein noscript-Element (was zwar auf dasselbe herauskommt, aber mit noframes hat das nichts zu tun, es dürfte eher in die Kategorie Fehlertoleranz fallen, falls Suchmaschinenrobots und Browser alles richtig anzeigen).

Wie gesagt: Frames + Javascript gibt's auf der Seite nur zusammen oder gar nicht.

Das noscript-Element ist nicht nur an falscher Stelle, sondern auch im Grunde unnötig.
Du musst, falls eine Komponente der beiden nicht verfügbar ist, den Alternativinhalt anzeigen. Mit dem noscript-Element verhinderst du, dass die Variante »Frames unterstützt, JavaScript deaktiviert« ins Leere läuft.

Wenn du weiter bei diesem für mich unverständlichen Konzept bleiben willst, würde ich dir folgendes vorschlagen:

<!DOCTYPE ...Frameset...>
<head>...</head>
<frameset>
<script> ...schreibe die beiden frame-Elemente... </script>
<noframes>
<body>Alternativinhalt</body>
</noframes>
</frameset>
</html>

Dadurch dürften alle möglichen Szenarien abgedeckt sein.

Line 146, column 37: end tag for element "TITLE" which is not open (explain...).
    d.writeln('<title>Navigation</title>');

Das fällt wohl in die Kategorie Anfänger-/Flüchtigkeitsfehler.

Ja, der Parser handhabt einen script-Elementinhalt als CDATA, </ wird als Ende des script-Elements angesehen, folglich musst du "</title>" oder "<"+"/title>" schreiben. »The first occurrence of the character sequence "</" (end-tag open delimiter) is treated as terminating the end of the element's content.« (http://www.w3.org/TR/html401/types.html#type-cdata).

Dieser Artikel war auch übrigens in den von mir verlinkten Posting verlinkt - ich rate sonst zu einer Mischlösung, das heißt JavaScript auf den Unterseiten und Perl/PHP/$serverseitigeSprache im Frameset,

"Datt köst extra" - und das ist mir der Spaß nicht wert. Irgendwann einmal, wenn ich reich, alt und grau bin, werde ich einen eigenen Server für die Domain haben. So lange muß es mit der Billiglösung ohne PHP und ohne eigene CGIs gehen.

Das Problem habe ich auch, ich löse es durch einen Präprozessor auf Autorenseite, das heißt vor dem Upload werden die dynamischen und sich ändernden Bestandteile generiert.

Grüße,
Mathias