night: Framefähigkeit abfragen mit Javascript?

Hallo.

Will hier keine neue Grundsatzdiskussion zum Thema Sinn/Unsinn von Frames starten, hab aber trotzdem zu Frames ne Frage:

Möchte auf einer Seite OHNE Frames einen Link oder Button setzen zum Öffnen einer Seite MIT Frames.
Da ich diesen Link aber nur dann anbieten will, wenn der verwendete Browser auch Frames anzeigt (i.e. diese nicht deaktiviert sind), würde ich gerne vorher mit Javascript diese Funktionalität abfragen, so wie ich vorher auch etwa die Auflösung etc. abfrage und dementsprechend weiterleite bzw. dementsprechende Links anbiete. Kann durchaus sinnvoll sein, etwa bei mobilen Anzeigegeräten oder bei Opera als Browser, die zwar Javascript verstehen, aber eben nicht zwingend Frames interpretieren.

Hab aber bisher hier nichts gefunden, wie das gehen könnte. Jemand eine Idee dazu?

  1. Moin!

    Lese hier was zum noframe-bereich:
    http://de.selfhtml.org/html/frames/definieren.htm#noframes

    den javascriptkram kann ich abstellen und habe dann ein problem.

    tschüssi
    ichen

    1. Lese hier was zum noframe-bereich:
      http://de.selfhtml.org/html/frames/definieren.htm#noframes

      ich habe in der Seite KEINEN noframe bereich - ist ja eine Seite ohne Frames, auf der ich den Link anbieten will...

      den javascriptkram kann ich abstellen und habe dann ein problem.

      Schon klar, aber wenn Javascript deaktiviert ist, kommt die Seite garnicht erst bis zu dem Punkt bzw. dann wird auf eine Seite weitergeleitet, die ohne Javascript läuft...

      ---

      Hintergund ist, daß ich dem Betrachter zwar die Wahl lassen möchte, ob mit oder ohne Frames weiter, zugleich aber "mit Frames" nur anbieten will, wenn dessen Browser es auch tatsächlich anzeigt... genau wie ich an der Stelle jeweils nur auf Seiten in der für den jeweiligen Browser passenden Auflösung verzweige (ohne das der Betrachter es merkt)...

      1. ... genau wie ich an der Stelle jeweils nur auf Seiten in der für den jeweiligen Browser passenden Auflösung verzweige (ohne das der Betrachter es merkt)...

        Was ist denn eine passende Auflösung?
        Dir ist schon klar, das die Auflösung nichts für HTML Seiten belanglos ist?
        Da das keine Information ist, die dir irgendeinen Nutzen bringt.

        Struppi.

        1. Was ist denn eine passende Auflösung?

          Sorry, hatte mich wohl etwas unklar ausgedrückt...
          Prinzipiell soll es vereinfacht so aussehen, daß ich eine Startseite bzw. eine ganze Website ohne Frames habe, auf dieser möchte ich als ein Menüpunkt eine art Bilderbuch anbieten. Hierzu soll der Benutzer auf der einleitenden Seite zwei Links zur Auswahl haben
          -> weiter ohne Frames
          -> weiter mit Frames,
          wobei jeweils ein neues Fenster geöffnet wird.
          Abhängig von der Auflösung wird dann entweder eine 800x600-Version oder eine 1024er aufgerufen - das hatte ich gemeint mit passende Auflösung.

          Mein Problem ist nach wie vor, daß ich den Link "weiter mit Frames" dann garnicht erst anbieten möchte, wenn der Brwoser eh keine darstellt. In diesem Falle würde ich direkt weiterleiten auf die Seite ohne Frames (dann im gleichen Fenster). Nur dazu müßte ich eben diese Funktionalität abgefragt bekommen...

          1. Hi,

            Hierzu soll der Benutzer auf der einleitenden Seite zwei Links zur Auswahl haben
            -> weiter ohne Frames
            -> weiter mit Frames,
            wobei jeweils ein neues Fenster geöffnet wird.

            Du kennst noframes? Browser, die keine Frames darstellen, werden den Inhalt vermutlich interpretieren. Wozu also Javascript? Rufe ein 100% Frameset auf, in dessen Frame Du beide Links anbietest und im noframes-Bereich steht der Quelltext der framelosen Seite.

            Abhängig von der Auflösung wird dann entweder eine 800x600-Version oder eine 1024er aufgerufen - das hatte ich gemeint mit passende Auflösung.

            Du meinst Fenstergröße? Ich hoffe doch, Du läßt dem Besucher die Wahl genauso wie bei den Frames.

            freundliche Grüße
            Ingo

            1. Hi,

              Du kennst noframes? Browser, die keine Frames darstellen, werden den Inhalt vermutlich interpretieren. Wozu also Javascript? Rufe ein 100% Frameset auf, in dessen Frame Du beide Links anbietest und im noframes-Bereich steht der Quelltext der framelosen Seite.

              Insbesondere sei noch erwähnt, daß das noframes-Element keineswegs auf die Verwendung innerhalb des frameset-Elements beschränkt ist.
              In Transitional ist es innerhalb jedes HTML-Elements erlaubt, das %block;-Inhalt zuläßt - also überall da, wo auch p, table, div usw. stehen dürfen.
              Noframes darf wiederum script-Elemente enthalten ...

              <script type="text/javascript"> var framespossible=true; </script>

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

              <script type="text/javascript"> alert(framespossible); </script>

              sollte also eigentlich funktionieren ...

              cu,
              Andreas

              --
              Warum nennt sich Andreas hier MudGuard?
              Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
              1. Hi,

                <script type="text/javascript"> alert(framespossible); </script>

                sollte also eigentlich funktionieren ...

                sofern Javascript aktiviert ist. Warum aber dieser Aufwand, wenn es auch mit HTML alleine zuverlässig funktioniert?

                freundliche Grüße
                Ingo

                1. Hi,

                  sofern Javascript aktiviert ist. Warum aber dieser Aufwand, wenn es auch mit HTML alleine zuverlässig funktioniert?

                  Weil die ursprüngliche Frage so lautete ;-)

                  cu,
                  Andreas

                  --
                  Warum nennt sich Andreas hier MudGuard?
                  Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                  1. Hi,

                    Weil die ursprüngliche Frage so lautete ;-)

                    Hätte ich mal rechtzeitig den Themenbereich gewechselt.. ;-)

                    freundliche Grüße
                    Ingo

                    1. Weil die ursprüngliche Frage so lautete ;-)

                      Nicht nur, eben weil HTML alleine nicht zuverlässig funktioniert, zumindest wird dies auch hier so geschrieben, siehe mein letztes Posting...

                      1. Hab glaub ich ne Lösung gefunden, muß morgen aber erst noch austesten, ob´s wirklich funktioniert... Falls ja, hätte ich auch früher drauf kommen können, so einfach ist´s dann...

                        <script type="text/javascript" language="JavaScript">
                        <!--

                        function frm_abfrage()
                        {
                        if (window.frames)
                         alert('framefähig')
                        else
                         alert('nicht framefähig')
                        }

                        // -->
                        </script>

                        nur dann halt statt alert() jeweils document.write() mit den entsprechenden Links...

              2. Du kennst noframes? Browser, die keine Frames darstellen, werden den Inhalt vermutlich interpretieren.

                Ja, leider aber auch Browser, die Frames interpretieren, siehe den Link, den eben hier jemand gepostet hat: http://de.selfhtml.org/html/frames/definieren.htm#noframes

                da heißt es ausdrücklich:
                "Noframes-Bereiche in Projektdateien außerhalb der Datei mit Frameset-Definitionen sind allerdings mit Vorsicht zu genießen: denn leider werden sie nicht nur von nicht-frame-fähigen Browsern angezeigt, sondern auch von älteren frame-fähigen. So zeigt beispielsweise Netscape 4.x den Noframes-Bereich in der Datei startseite2.htm des obigen Beispiels gnadenlos an und verwirrt damit Anwender, bei denen das Frameset angezeigt wird. Internet Explorer 5.x und Netscape 6.x unterdrücken dagegen Noframes-Bereiche in solchen Projektdateien.

                Wenn Sie in Projektdateien, die in einem Framefenster angezeigt werden, Noframes-Bereiche notieren, müssen Sie für solche Projektdateien die HTML-Variante "Transitional" wählen, denn in der "Strict"-Variante gibt es keine Frames und auch keine Noframes-Bereiche."

                Rufe ein 100% Frameset auf

                Möchte ja gerade die eigentliche HP komplett ohne Frames darstellen, lediglich bei einem Unterpunkt soll alternativ auch eine Framedarstellung angeboten werden.

                <script type="text/javascript"> var framespossible=true; </script>

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

                <script type="text/javascript">

                if framespossible != 'false'
                 {document.write(link1\_ohne\_frames,link2\_mit\_frames)}
                else
                 {document.write(link1\_ohne\_frames)}
                »»</script>

                sollte also eigentlich funktionieren ...

                Würde im Prinzip so funktionieren, würde mich aber aus den o.g. Gründen ungerne drauf verlassen, daß <noframes> richtig interpretiert wird...

                Gibt´s keine Möglichkeit, aus einer Seite ohne Frames/noframe-Bereiche mit Javascript ein frame-object anzusprechen und dann z.b. einen (bei Nichtframefähigkeit resultierenden) Error-Code auszuwerten?
                Hatte evtl. an so was ähnliches gedacht, wie bei Netscape 4.0: "if (document.layers) ... else ..."

                1. Hi,

                  Ja, leider aber auch Browser, die Frames interpretieren, siehe den Link, den eben hier jemand gepostet hat: http://de.selfhtml.org/html/frames/definieren.htm#noframes

                  sorry, aber zum einen ist der Netscape4 nun wirklich überholt und zum anderen hast Du nicht genau genug gelesen bzw.:

                  "Noframes-Bereiche in Projektdateien außerhalb der Datei mit Frameset-Definitionen

                  überlesen. Wenn Du - wie ich Dir vorgeschlagen habe - den noframes-Bereich in der Frameset-Datei korrekt einbindest, hat selbst Netscape4 keine Probleme damit. (Mit MudGuards Variante allerdings schon..;-)

                  Möchte ja gerade die eigentliche HP komplett ohne Frames darstellen, lediglich bei einem Unterpunkt soll alternativ auch eine Framedarstellung angeboten werden.

                  Ja und? Was hindert Dich daran? Du erstellst _eine_ Frameset-Seite zum testen und verlinkst von hier - wenn gewünscht - wieder mit target="_top" auf eine framelose Seite.

                  Gibt´s keine Möglichkeit, aus einer Seite ohne Frames/noframe-Bereiche mit Javascript ein frame-object anzusprechen und dann z.b. einen (bei Nichtframefähigkeit resultierenden) Error-Code auszuwerten?

                  So, jetzt ändere ich aber doch mal den unsinnigen Themenbereich. :-)

                  freundliche Grüße
                  Ingo

          2. Was ist denn eine passende Auflösung?

            ...

            wobei jeweils ein neues Fenster geöffnet wird.
            Abhängig von der Auflösung wird dann entweder eine 800x600-Version oder eine 1024er aufgerufen - das hatte ich gemeint mit passende Auflösung.

            Was ist der Unterschied einer 800er und einer 1024er Version?

            Struppi.