molily: und Frameset-Weiche, zweiter Versuch ;)

Beitrag lesen

Hallo nochmal,

HUALP, wie man so schön sagt. Mea culpa, mea maxima culpa.

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.

Kann es sein, dass ich zum Teil absoluten Blödsinn geschrieben habe? Noch einmal die Szenarien:

Frames nein, JavaScript nein: der Alternativinhalt wird gezeigt
Frames ja, JavaScript nein: man sieht gar nichts, weil der Alternativinhalt nicht angezeigt wird, das Frameset aber auch nicht (grmbl!)
Frames nein, JavaScript ja: der Alternativinhalt wird gezeigt
Frame ja, JavaScript ja: Frameset wird angezeigt

Habe ich nur das Gefühl, oder lassen sich beide Fälle nicht vereinbaren? Denn wo soll ein noscript-Bereich außerhalb des noframes-Elements unterbringen, vor allem: wie soll im Endeffekt ein valides Frameset herauskommen? Ich habe stark das Gefühl, dass das nicht möglich ist.

Verzeihe bitte, ich dachte, ich hätte alle Eventualitäten bedacht, eigentlich hatte ich die Fälle schon im letzten Posting haarklein untersuchen wollen (ich verhaspelte mich anscheinend gedanklich, weil ich eben die Unvereinbarkeit als Möglichkeit nicht bedacht hatte).

Es geht um eine zweistufige Überprüfung, folglich würde ich zu folgendem raten (jetzt hoffentlich mit Bedacht):

  1. Ein normales Vorschaltdokument, welches zunächst nach JavaScript selektiert. In einem noscript-Element wird den Alternativinhalt gezeigt, ein script-Element leitet schnurstracks zu 2).
  2. Ein zunächst statisches Frameset, welches später JavaScript aus dem QueryString editiert und die location.href des Frames ändert. Hier wird nach Frames selektiert, in einem noframes-Element wird der Alternativinhalt angeboten.

Szenarien:
Frames nein, JavaScript nein: Besucher bleibt bei 1) hängen und sieht den Alternativinhalt
Frames ja, JavaScript nein: Besucher bleibt bei 1) hängen und sieht den Alternativinhalt
Frames nein, JavaScript ja: Besucher wird bei 1) durchgereicht und bleibt bei 2) hängen und sieht den Alternativinhalt
Frame ja, JavaScript ja: Besucher wird bei 1) durchgereicht und sieht bei 2) das Frameset

Wie gesagt, wenn man nicht darauf Wert legt, dass das Frameset-Dokument irgendwie den Konventionen entspricht, wäre vielleicht folgendes ausreichend:

(am besten kein DOCTYPE - egal welcher angegeben wird, er ist unzutreffend ;))
<html>
<head>...</head>
<script>...Frameset schreiben...</script>
<noscript>Alternativinhalt</noscript>
<noframes>Alternativinhalt</noframes>
</html>

Jedoch...

Szenarien:
Frames nein, JavaScript nein: der Alternativinhalt wird zweimal angezeigt, hualp!
Frames ja, JavaScript nein: der noscript-Alternativinhalt wird angezeigt
Frames nein, JavaScript ja: der noframes--Alternativinhalt wird angezeigt
Frame ja, JavaScript ja: das Frameset wird angezeigt

Wie ließe sich also Szenario eins behandeln, außer über ein zweistufige Überprüfung?

Der entscheidende Punkt ist natürlich, dass die Zahl der Besucher, welche Frames nicht verfügbar/deaktiviert und JavaScript verfügbar und aktiviert haben, verschwindend gering ist. Selbst wenn man diese Gruppe missachtet, löst es nichts an dem Grundproblem, dass ein Frameset Alternativinhalte nur im noframes-Element haben darf, womit folgendes theoretisch in Frage käme:

<html>
<head>...</head>
<script>...Frameset schreiben...</script>
<noframes><noscript>Alternativinhalt/noscript></noframes>
</html>

Szenarien:
Frames nein, JavaScript nein: Alternativinhalt wird angezeigt
Frames ja, JavaScript nein:  Alternativinhalt wird angezeigt
Frames nein, JavaScript ja: das Script schreibt das Frameset, es wird aber ignoriert. noframes wird interpretiert, aber noscript wird ignoriert. Es wird nichts angezeigt, hualp!
Frame ja, JavaScript ja: Alles »paletti« ;)

Selbst wenn man ungültiges Markup schreibt:
<noframes><noscript>Alternativinhalt/noscript></noframes>
..wären die Auswirkungen:

Szenarien:
Frames nein, JavaScript nein: Alternativinhalt wird angezeigt
Frames ja, JavaScript nein: es wird kein Frameset geschrieben, es bleibt nur das noframes Element, dieses wird ignoriert. Es wird nichts angezeigt, hualp!
Frames nein, JavaScript ja: es wird ein Frameset geschrieben, welches nicht interpretiert wird, das noframes-Element wird interpretiert, aber das noscript-element nicht. Es wird nichts angezeigt, hualp.
Frame ja, JavaScript ja: Das Frameset wird wie gewünscht angezeigt.

Bei der Abhängigkeit »Javascript bedingt Frames« weiß ich nicht, wie man alle Fälle in einem Dokument behandeln könnte, weitere Untersuchungen führen auch nicht zum Ziel... Wie gesagt, eine zweistufige Abfrage ist der einzige mir bekannte Fall, welcher auch mit gültigem Markup zu lösen wäre.

Grüße,
Mathias