Alexander Foken: Suche sowas wie navigator.framesEnabled

Moin Moin !

Ich sehe wohl den Wald vor lauter Bäumen nicht. Eigentlich habe ich ja nur eine ganz kurze Frage, aber ihr müßt halt auch die vielen "Bäume" sehen, um mir den Wald zu zeigen. ;-)

Ich versuche gerade, meine Homepage auf valides HTML 4.01 zu bringen. Schwierigkeit dabei: Frames und eine Javascript-basierte Navigation, und keinerlei Möglichkeit, irgendetwas auf dem Server zu machen (keine CGIs, kein SSI, kein PHP, kein Perl, keine ASP). Das meiste funktioniert mit vorberechneten HTML-Seiten und Client-seitigem Javascript sehr gut. Auch ohne Javascript ist die Seite zu benutzen, ohne Frames und ohne Javascript funktioniert auch alles.

Probleme habe ich nur mit dem Fall, daß ein Browser zwar Javascript erlaubt, aber keine Frames (exotisch, aber mit wenigen Mausklicks durchaus möglich!). Einige Funktionen müssen in diesem Fall anders ablaufen.

Und genau an der Stelle klemmts: Ich kann mit ...

<script language="Javascript" type="text/javascript">
<!--
 var haveFrames=true;
//-->
</script>
<noframes>
<script language="Javascript" type="text/javascript">
<!--
 haveFrames=false;
//-->
</script>
</noframes>

... erkennen, ob der Browser Frames unterstützt, aber dann ist die Seite nicht mehr valid, weil das NOFRAMES-Tag im Header nichts zu suchen hat.

In der Frameset-Seite mault der Validator am <noframes>-Tag: >>This page is not Valid HTML 4.01 Frameset! Start tag for "FRAMESET" omitted, but its declaration does not permit this.<<

Und in den Inhaltsseiten ...

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="MSSmartTagsPreventParsing" content="TRUE">
<title>Meine Homepage</title>
<script language="Javascript" type="text/javascript">
<!--
 var haveFrames=true;
//-->
</script>
<noframes>
<script language="Javascript" type="text/javascript">
<!--
 haveFrames=false;
//-->
</script>
</noframes>
<link rel="stylesheet" type="text/css" href="../stylesheet.css">
<script language="Javascript" type="text/javascript">
<!--
 function NavOnLoad()
 {
  if (top==self) {
   window.location.href='../?internet/homepage.html';
  } else {
   top.UpdateNav('internet/homepage.html');
  }
 }
//-->
</script>
</head>

... ist der "LINK"-Tag nach "noframes" unbeliebt: >>This page is not Valid HTML 4.01 Transitional! Document type does not allow element "LINK" here.<<

So, und jetzt? Eigentlich hätte ich ja gerne ein navigator.framesEnabled-Attribut oder eine navigator.framesEnabled()-Methode analog zu navigator.cookieEnabled und navigator.javaEnabled(). Aber die gibt es ja wohl nicht.

Gibt es einen anderen Weg, zu überprüfen, ob der Browser Frames anzeigen kann?

Alexander

--
Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
  1. Hi,

    Probleme habe ich nur mit dem Fall, daß ein Browser zwar Javascript erlaubt, aber keine Frames (exotisch, aber mit wenigen Mausklicks durchaus möglich!).

    ja, den Browser kennen wir :-)

    In der Frameset-Seite mault der Validator am <noframes>-Tag: >>This page is not Valid HTML 4.01 Frameset! Start tag for "FRAMESET" omitted, but its declaration does not permit this.<<

    Hast Du die Schachtelung denn richtig vorgenommen? Richtig wäre <frameset>...<noframes/></frameset>

    ... ist der "LINK"-Tag nach "noframes" unbeliebt: >>This page is not Valid HTML 4.01 Transitional! Document type does not allow element "LINK" here.<<

    Framebezügliches gibt es nur innerhalb eines Frameset-DTDs. Außerhalb desselben gibt es gerade mal ein target-Attribut, und das war's.

    So, und jetzt? Eigentlich hätte ich ja gerne ein navigator.framesEnabled-Attribut oder eine navigator.framesEnabled()-Methode

    Das navigator-Objekt war schon immer nutzfrei. Du brauchst es _nie_, weil sein Inhalt bzw. dessen, was Du daraus interpretieren möchtest, bei sinnvoller Handhabe direkt erhalten werden kann. Schließlich bruachst Du keine Browserweiche, sondern eine Funktionsweiche - welche Du in diesem Fall mittels z.B. "if (top && top.framename)" noch mit dem Vorteil erhälst, dass Du Direktlinks in eine (framelose) Unterseite ebenso gut behandeln kannst.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Hallo Cheatah,

      Framebezügliches gibt es nur innerhalb eines Frameset-DTDs. Außerhalb desselben gibt es gerade mal ein target-Attribut, und das war's.

      Wie meinst du das? Das noframes-Element ist in Transitional erlaubt.

      http://www.w3.org/TR/html401/loose.dtd:

      <!ENTITY % block
           "P | %heading; | %list; | %preformatted; | DL | DIV | CENTER |
            NOSCRIPT | NOFRAMES | BLOCKQUOTE | FORM | ISINDEX | HR |
                       ^^^^^^^^
            TABLE | FIELDSET | ADDRESS">

      <!ENTITY % flow "%block; | %inline;">
                        ^^^^^

      <!ELEMENT BODY O O (%flow;)* +(INS|DEL) -- document body -->
                           ^^^^

      (Natürlich habe ich keine »<![ %HTML.Frameset; [ ... ]]>« gekürzt.)

      »The NOFRAMES element is part of both the transitional and frameset DTDs. [...] NOFRAMES may be used, for example, in a document that is the source of a frame and that uses the transitional DTD.«
      (http://www.w3.org/TR/html401/present/frames.html#noframes ff.)

      Mathias

      1. Moin Moin !

        Wie meinst du das? Das noframes-Element ist in Transitional erlaubt.

        http://www.w3.org/TR/html401/loose.dtd:

        Aber nicht im Header, so wie ich das sehe. Oder ?

        Alexander

        --
        Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
        Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
        1. Hi,

          Wie meinst du das? Das noframes-Element ist in Transitional erlaubt.

          das war mir in der Tat nicht bewusst, muss ich zugeben. Es erfüllt mich auch leicht mit Erstaunen.

          Aber nicht im Header, so wie ich das sehe. Oder ?

          Aus dem genannten DTD:
          <!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->
          <!ENTITY % head.content "TITLE & ISINDEX? & BASE?">
          <!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- repeatable head elements -->

          Nope, ein NOFRAMES ist da nicht bei.

          Cheatah

          --
          X-Will-Answer-Email: No
          1. Moin Moin !

            Wie meinst du das? Das noframes-Element ist in Transitional erlaubt.
            Aber nicht im Header, so wie ich das sehe. Oder ?
            Aus dem genannten DTD:
            <!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->
            <!ENTITY % head.content "TITLE & ISINDEX? & BASE?">
            <!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- repeatable head elements -->
            Nope, ein NOFRAMES ist da nicht bei.

            Tja, das könnte erklären, warum der Validator meine Seite nicht so recht mochte. ;-)

            Mit Betonung auf die Vergangenheitsform!

            Das Problem ist gelöst, die Seite ist valid und funktioniert mit und ohne Frames, mit und ohne Javascript.

            Mal sehen, wann die nächste Macke ans Tageslicht kommt. ;-)

            Alexander

            --
            Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
            Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
            Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
          2. Moin Moin !

            Wie meinst du das? Das noframes-Element ist in Transitional erlaubt.
            Aber nicht im Header, so wie ich das sehe. Oder ?
            Aus dem genannten DTD:
            <!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->
            <!ENTITY % head.content "TITLE & ISINDEX? & BASE?">
            <!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- repeatable head elements -->
            Nope, ein NOFRAMES ist da nicht bei.

            Tja, das könnte erklären, warum der Validator meine Seite nicht so recht mochte. ;-)

            Mit Betonung auf die Vergangenheitsform!

            Das Problem ist gelöst, die Seite ist valid und funktioniert mit und ohne Frames, mit und ohne Javascript.

            Mal sehen, wann die nächste Macke ans Tageslicht kommt. ;-)

            Alexander

            --
            Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
            Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
            Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
            1. Hallo Alexander,

              Das Problem ist gelöst, die Seite ist valid und funktioniert mit und ohne Frames, mit und ohne Javascript.

              Würde es Dich vielleicht interessieren, daraus einen Tipp&Trick-Beitrag zu machen? Ich denke, dass einige Leute sicherlich nach so einer Lösung gesucht haben werden.

              Christian

              1. Hallo,

                Das Problem ist gelöst, die Seite ist valid und funktioniert mit und ohne Frames, mit und ohne Javascript.

                Würde es Dich vielleicht interessieren, daraus einen Tipp&Trick-Beitrag zu machen? Ich denke, dass einige Leute sicherlich nach so einer Lösung gesucht haben werden.

                Ich fände es nicht unproblematisch, einen solchen Siteaufbau zu empfehlen. Bezüglich Sitemaps als nahezu einzige Hauptnavigationsstruktur (vor allem im Zusammenhang mit Frames) habe ich bereits in </archiv/2003/2/37244/#m204177> ff. viel gesagt... Alexanders (nicht als Verzeichnis fungierende) Unterseiten haben größtenteils weder noframes-breadcrumb trails noch generelle Kontextlinks. All das sollte meiner Meinung nach in das Modell aufgenommen werden, sofern das Gesamtkonzept vorgestellt werden soll.

                Mathias

                1. Moin Moin !

                  Ich fände es nicht unproblematisch,

                  <Deutschkurs>
                  Warum doppelte Verneinung? Denkst Du wirklich so umständlich?
                  Warum Konjunktiv? Ist es Deine Meinung oder nicht?

                  Keine falsche Scham, also: "Ich finde es problematisch, ..."
                  </Deutschkurs>

                  einen solchen Siteaufbau zu empfehlen. Bezüglich Sitemaps als nahezu einzige Hauptnavigationsstruktur

                  <Deutschkurs>
                  Sollte eine Hauptnavigation nicht "einzig" sein? Hast Du schonmal was von einer Stadt mit zwei Hauptbahnhöfen gehört?

                  Was ist "nahezu einzig"? Einzig ist ein richtiges "boolsches" Attribut: Entweder ist irgendetwas einzig oder es ist es nicht. Dazwischen gibt es nichts.
                  </Deutschkurs>

                  (vor allem im Zusammenhang mit Frames) habe ich bereits in </archiv/2003/2/37244/#m204177> ff. viel gesagt... Alexanders (nicht als Verzeichnis fungierende) Unterseiten haben größtenteils weder noframes-breadcrumb trails noch generelle Kontextlinks.

                  Kommt noch. Die Homepage funktioniert für die meisten Leute und für Suchmaschinen, ich habe nicht allzuviel Zeit für die Pflege, also bekommt das erstmal eine geringere Priorität.

                  All das sollte meiner Meinung nach in das Modell aufgenommen werden, sofern das Gesamtkonzept vorgestellt werden soll.

                  Um mal einen meiner Ex-Profs zu zitieren: "Wir haben keine Zeit für Konzepte, wir müssen handeln!"

                  Diese Lösung mit Frames, Javascript und vorberechneten HTML-Seiten ist ein Provisorium, das "irgendwann" durch eine saubere, serverseitige Lösung ersetzt werden soll. Dazu fehlt es aber momentan am Server und an der Zeit.

                  Alexander

                  --
                  Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
                  Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
                  Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
              2. Moin Moin !

                Würde es Dich vielleicht interessieren, daraus einen Tipp&Trick-Beitrag zu machen? Ich denke, dass einige Leute sicherlich nach so einer Lösung gesucht haben werden.

                Nein, nicht wirklich. Das ganze ist ein wirklich übler Workaround, um auf serverseitige Aktionen verzichten zu können. Ich habe das nur soweit verfeinert, bis der Validator nicht mehr gejammert hat. Das ganze funktioniert nur mit viel Vorberechnung und einigen Perl-Scripten, die auf meine sehr speziellen Bedürfnisse zugeschnitten sind. Daraus eine halbwegs brauchbare und allgemein nutzbare Lösung zu machen, dürfte noch sehr viel Arbeit bedeuten.

                Alexander

                --
                Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
                Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
                Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
    2. Moin Moin !

      In der Frameset-Seite mault der Validator am <noframes>-Tag: >>This page is not Valid HTML 4.01 Frameset! Start tag for "FRAMESET" omitted, but its declaration does not permit this.<<

      Hast Du die Schachtelung denn richtig vorgenommen? Richtig wäre <frameset>...<noframes/></frameset>

      Das problematische <noframes> liegt im Header, und so wie ich SelfHTML gelesen habe, darf es das auch: http://selfhtml.teamone.de/html/frames/definieren.htm#noframes, Beispiel 2.

      So, und jetzt? Eigentlich hätte ich ja gerne ein navigator.framesEnabled-Attribut oder eine navigator.framesEnabled()-Methode

      Das navigator-Objekt war schon immer nutzfrei

      Es ist mir auch egal, ob die Information aus dem navigator-Objekt oder sonstwo herkommt, da wäre sie IMHO nur am besten aufgehoben. Ich möchte nur in Javascript wissen, ob der Browser (zur Zeit) Frames kann oder nicht.

      Schließlich bruachst Du keine Browserweiche, sondern eine Funktionsweiche - welche Du in diesem Fall mittels z.B. "if (top && top.framename)" noch mit dem Vorteil erhälst, dass Du Direktlinks in eine (framelose) Unterseite ebenso gut behandeln kannst.

      Erklär mir bitte, wie ich diese zwei Fälle unterscheiden kann:

      1. Browser kann Frames, Unterseite wurde ohne Frameset geladen. => Frameset-Nachlade-Funktion (top.location.href='/index.html?page.html') soll aktiv werden.

      2. Browser kann keine Frames, Unterseite wurde zwangsläufig ohne Frameset geladen. => Frameset-Nachlade-Funktion soll passiv bleiben.

      Ich sehe es im Moment nämlich nicht.

      Alexander

      --
      Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
      Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
      1. Hallo Alexander,

        Vorweg: Du hattest </archiv/2003/2/37752/#m207405> und vor allem auch das Folgeposting mit meine Mutmaßung über die Unmöglichkeit der einstufigen Überprüfung gelesen (im Frameset)?

        Ich antworte gleich noch genauer zu den Fragen deines Ursprungspostings.

        Erklär mir bitte, wie ich diese zwei Fälle unterscheiden kann:

        1. Browser kann Frames, Unterseite wurde ohne Frameset geladen. => Frameset-Nachlade-Funktion (top.location.href='/index.html?page.html') soll aktiv werden.

        2. Browser kann keine Frames, Unterseite wurde zwangsläufig ohne Frameset geladen. => Frameset-Nachlade-Funktion soll passiv bleiben.

        Bring den Mechanismus direkt am Anfang des Dokumentkörpers unter:

        <!DOCTYPE ...Transitional...>
        <html>
        <head>...<title>...</title>...</head>
        <body>
        <script type="text/javascript">var framesAktiviert=true;</script>
        <noframes><script type="text/javascript">framesAktiviert=false;</script></noframes>
        <script type="text/javascript">if (framesAktiviert) FramesetNachladen();</script>
        ...Inhalt...
        </body>
        </html>

        Meinen Tests nach sollte diese Variante das gewünschte Ergebnis bringen.

        Grüße,
        Mathias

        1. Moin Moin !

          Vorweg: Du hattest </archiv/2003/2/37752/#m207405>

          Ja, sonst hätte ich das Problem ja gar nicht. ;-)

          Bring den Mechanismus direkt am Anfang des Dokumentkörpers unter:

          [...]

          Meinen Tests nach sollte diese Variante das gewünschte Ergebnis bringen.

          Mittlerweile bin ich auch zu der Einsicht gekommen, daß es wohl kaum anders geht. Genau das wollte ich vermeiden, denn das artet in Arbeit aus. :-(

          Alexander

          --
          Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
          Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
          Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
          1. Hallo Alexander,

            Vorweg: Du hattest </archiv/2003/2/37752/#m207405> und vor allem auch das Folgeposting mit meine Mutmaßung über die Unmöglichkeit der einstufigen Überprüfung gelesen (im Frameset)? [Zitat vervollständigt]

            Ja, sonst hätte ich das Problem ja gar nicht. ;-)

            Bitte was? Im Gegenteil, sofern du meinem Rat, nämlich einer zweistufigen Abfrage, gefolgt wärst, würdest du das beschriebene Problem im Frameset nicht haben, soweit ich die Situation erfasst habe. Außerdem hatte ich bereits dargelegt, dass sich dieses einstufige Modell nicht valide realisieren lässt - wieso aber fragst du, wie es sich valide lösen lässt? Vielleicht ist mir ein Denkfehler unterlaufen, aber bitte erkläre es mir, wie du es valide hinbekommen willst, ich verstehe deine Strategie nicht. Angenommen du könntest mit JavaScript abfragen, ob Frames existieren, wie willst du alle Szenarien abdecken? Was willst du dynamisch einbinden, frameset- und/oder noframes-Elemente?

            Hm, möglicherweise ahne ich, worauf du hinaus willst.  Ein weiterer Versuch, welcher per se nicht valide sein kann (naja, vielleicht pseudo-valide):

            <-- kein Doctype, weil erst während der Laufzeit entschieden wird, ob es ein Frameset- oder Transitional-Dokument wird -->
            <htmllang="de">
            <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <title>murks</title>
            </head>

            <noscript>alternativinhalt bei deaktiviertem javascript</noscript>

            <script type="text/javascript">framesAktiviert=true;</script>

            <noframes>
            <script type="text/javascript">framesAktiviert=false;</script>
            </noframes>

            <script type="text/javascript">
            if (framesAktiviert) {
             document.write('<frameset rows="*,*"><frame name="eins" src="murks.html"><frame name="zwei" src="murks.html"></frameset>');
            } else {
             document.write('<body>alternativinhalt bei aktiviertem javascript</body>');
            }
            </script>
            </html>

            Szenarien:

            • Frames nein, JavaScript nein: Nur das erste noscript-Element wird interpretiert und der Alternativinhalt wird angezeigt
            • Frames ja, JavaScript nein: Nur das erste noscript-Element wird interpretiert und der Alternativinhalt wird angezeigt
            • Frames nein, JavaScript ja: noscript wird nicht angezeigt, script-Element eins schon und setzt framesAktiviert=true, das noframes-Element wird samt script-Element interpretiert und setzt framesAktiviert=false, das dritte script-Element gibt aufgrund von framesAktiviert==false den Alternativinhalt aus
            • Frames ja, JavaScript ja: das letzte Script gibt ein Frameset aus und der Browser interpretiert es (hoffentlich)

            Das sieht recht vielversprechend aus, falls ich mich nicht irre. Natürlich gibt es keine Garantie, dass die Browser diesen murksigen Code schlucken (Opera macht es bei allen Szenarien, MSIE 6 anscheinend auch bei den möglichen Szenarien).
            Meintest du so etwas? Wie gesagt, ich stehe grundsätzlich weiterhin zu dem empfohlenen Zwei-Stufen-Modell, welches unvergleichbar zuverlässiger ist.

            Grüße,
            Mathias

            1. Moin Moin !

              Ja, sonst hätte ich das Problem ja gar nicht. ;-)

              Bitte was?

              Mann, Du verstehst ja noch weniger Spaß als ich! Und ich dachte, daß wäre gar nicht möglich.

              Es funktioniert jetzt, und der W3C-Validator hält meinen Code für valid. Ich brauchte allerdings wirklich ein statisches FRAMESET (statt es in Javascript zu generieren). In dem Punkt hattest Du recht.

              Ich wollte (und habe jetzt) vier Anzeige-Varianten. Alles funktioniert aus einer Datei mit einem <FRAMESET> und entsprechendem DOCTYPE.

              1. Keine Frames, kein Javascript: "WWW-Steinzeit" mit untereinander verlinkten Seiten. Die Navigation steckt komplett im <noframes>-Bereich der Startseite.

              2. Frames, kein Javascript: Ein Navigationsframe aus einer Extra-Datei mit <a target="Content-Frame-name">.

              3. Keine Frames, aber Javascript: Die Navigation kommt wieder aus dem <noframes>-Bereich der Startseite. Dank eines <SCRIPT>-Tags innerhalb von <NOFRAMES> in <FRAMES> bzw. <BODY> werden die Zusatzfunktionen auf framelosen Betrieb zurückgestutzt.

              4. Frames und Javascript: Javascript überschreibt das Navigationsframe mit einem dynamisch erzeugten Baum.

              Zu sehen unter http://www.foken.de/alexander/.

              [...] Natürlich gibt es keine Garantie, dass die Browser diesen murksigen Code schlucken (Opera macht es bei allen Szenarien, MSIE 6 anscheinend auch bei den möglichen Szenarien).

              *Da* stimme ich Dir zu. ;-)

              Alexander

              --
              Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
              Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
              Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
    3. Noch einmal hallo,

      if (top && top.framename)

      Wozu dient die erste Bedingung »top«?

      Meinen Untersuchungen nach ist »if (top) ...« (äquivalent zu »Boolean(top)«) immer wahr (wohingegen top==true unwahr ist), unabhängig davon, ob das Dokument im Frameset oder nicht aufgerufen wurde. Denn falls ein Dokument außerhalb jedes Framesets aufgerufen wird, kann top nur wahr sein, weil window auch wahr sein muss, weil in dem Fall top===window(===self) gilt. Oder übersehe ich etwas? Es sei denn, ein Browser beherrscht die bekannten JavaScript-Objekte, aber unterstützt generell keine Frames, dann wäre top unnötig. Einen solchen Browser gibt es meines Wissens aber nicht, und Boolean(top.framename) implizit meines Wissens, dass top existieren muss, damit der Ausdruck wahr wird.

      Mathias

      1. Moin Moin !

        if (top && top.framename)

        Wozu dient die erste Bedingung »top«?

        Das fällt wohl unter defensives Programmieren: Es schadet nicht, bei verschachtelten Objekten zu prüfen, ob das oberste Objekt auch wirklich ok ist. In diesem konkreten Fall mag es überflüssig sein, aber wenn man sich sowas einmal angewöhnt, kann man einige Fallen vermeiden.

        Alexander

        --
        Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
        Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
        1. Hi,

          if (top && top.framename)
          Wozu dient die erste Bedingung »top«?
          Das fällt wohl unter defensives Programmieren: Es schadet nicht, bei verschachtelten Objekten zu prüfen, ob das oberste Objekt auch wirklich ok ist. In diesem konkreten Fall mag es überflüssig sein, aber wenn man sich sowas einmal angewöhnt, kann man einige Fallen vermeiden.

          korrekt. top ist normalerweise immer vorhanden; aber gerade wenn man von Systemen ausgeht, die Frames wegkonfigurieren können, würde ich mich darauf nicht verlassen...

          Cheatah

          --
          X-Will-Answer-Email: No
  2. Hallo Alexander,

    und keinerlei Möglichkeit, irgendetwas auf dem Server zu machen (keine CGIs, kein SSI, kein PHP, kein Perl, keine ASP).

    Nachdem hierauf bei nicht-Stammpostern auch immer damit geantwortet wird, erspare ich das Dir nicht, sonst heißt es immer, nicht-Stammposter werden herablassen behandelt... ;-)

    Webhosting-Paket upgraden? (naja, anhand des reverse lookup Deiner IP nehme ich an bei Strato und 20/Monat ist wirklich etwas teuer für eine private Seite) Provider wechseln? http://www.webhostlist.de/?

    Christian

    --
    Hast Du einen Beitrag? Nur her damit!
    http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
    1. Moin Moin !

      Webhosting-Paket upgraden? (naja, anhand des reverse lookup Deiner IP nehme ich an bei Strato

      Bingo. War auch nicht schwer, oder? ;-)

      und 20/Monat ist wirklich etwas teuer für eine private Seite) Provider wechseln? http://www.webhostlist.de/?

      Zu faul. Und außerdem will ich dann einen "richtigen" (virtuellen) Server mit eigenen CGIs. Und das kostet auch bei anderen Providern mehr Geld, als ich zur Zeit da reinstecken will.

      Alexander

      --
      Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
      Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
      1. Hallo Alexander,

        Zu faul.

        Das ist keine Entschuldigung, höchstens eine Rechtfertigung. ;-)

        Und außerdem will ich dann einen "richtigen" (virtuellen) Server mit eigenen CGIs.

        Es gibt auch Provider, die bieten CGIs an, ohne dass Du einen virtuellen Server brauchst. Ich sehe für eine private Seite, auch mit viel dynamischen Inhalten und CGI&co eigentlich keinen Grund für einen eigenen virtuellen Server... Aber ich will Dir in nichts reinreden, es ist schließlich Deine Entscheidung. ;-)

        Christian

        --
        Hast Du einen Beitrag? Nur her damit!
        http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
        1. Moin Moin !

          Und außerdem will ich dann einen "richtigen" (virtuellen) Server mit eigenen CGIs.

          Es gibt auch Provider, die bieten CGIs an, ohne dass Du einen virtuellen Server brauchst. Ich sehe für eine private Seite, auch mit viel dynamischen Inhalten und CGI&co eigentlich keinen Grund für einen eigenen virtuellen Server...

          Soweit richtig.

          Aber ich will Dir in nichts reinreden, es ist schließlich Deine Entscheidung. ;-)

          Ich will unter foken.de ja nicht nur WWW und Mail machen, sondern auch noch einige "exotische" Sachen. Außerdem möchte ich mit Subdomains arbeiten (www.vorname.foken.de) und meiner Verwandschaft eigenen Webspace anbieten. Deswegen ist ein (virtueller) Server wohl doch nötig.

          Alexander

          --
          Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
          Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
          Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2