Achim: Name des Top-Frames

Ich möchte gerne dieses Codestück in meine Seiten einbauen:

if (top.index) {}
else {document.location="nogo.html"};

um sicherzustellen, dass man nicht eine der Seiten des Framesets direkt anspringen kann (soll nogo.html laden wenn der Top-Frame nicht index heisst).

Leider scheitere ich anscheinend daran, dem Top-Frame einen Namen zuzuweisen. Ich hab's mit "name=index" in der frameset-Anweisung der frameset-Definitionsdatei index.html versucht, aber ohne Erfolg, und ich weiss nicht, wie ich es sonst machen sollte.

Kann mir jemand weiterhelfen?

Vielen Dank im voraus

Achim

  1. Hallo Achim,

    irgendwie hast du dich mit deinem Ansatz ein bisschen vergaloppiert.

    Ich möchte gerne dieses Codestück in meine Seiten einbauen:

    if (top.index) {}
    else {document.location="nogo.html"};

    Es gibt kein "Top-Frame". Mit "top" kannst nu nur das Frameset selbst adressieren - dem kannst du aber AFAIK keinen Namen geben.

    Was du wahrscheinlich meinst, ist sowas:

    if (top.location.href==self.location.href)
          top.location.href = "nogo.html";

    Anstatt nogo.html könntest du hier auch gleich die index.html (und damit das vollständige Frameset) nachladen.

    So weit, so gut.
    Wenn du hier im Forum etwas recherchierst, wirst du feststellen, dass die meisten Stammgäste dir grundsätzlich von Frames abraten. Fast immer ist es besser, auf Frames zu verzichten. Zumal du dann auch das obige Javascript-Konstrukt nicht brauchst, das bekanntlich ein weiteres Problem mit sich bringt: Hat ein User Javascript deaktiviert, bleibt es vollkommen wirkungslos. Der User bekommt weder einen Hinweis, noch wird er auf das Frameset weitergeleitet.

    So long,

    Martin

    1. Hallo Martin,

      vielen Dank für die Antwort.

      irgendwie hast du dich mit deinem Ansatz ein bisschen vergaloppiert.

      Ja, anscheinend :)

      Es gibt kein "Top-Frame". Mit "top" kannst nu nur das Frameset selbst adressieren - dem kannst du aber AFAIK keinen Namen geben.

      Aha, naja, sorry für die dumme Frage, das wusste ich wirklich nicht.

      Was du wahrscheinlich meinst, ist sowas:

      if (top.location.href==self.location.href)
            top.location.href = "nogo.html";

      Vielen Dank. Ich werde das so verwenden.

      In welche Richtung würdest du mir raten zu gehen, wenn ich das derzeitige Layout von http://AchimT.flog.com ohne Frames aufbauen wollte - Tabelle, Layers? Und kannst du mir (ich möchte dir keine grosse Mühe machen) auf die Schnelle irgendeinen Link mit Infos zum Für und Wider von Frames und denkbaren Alternativen geben? Ich bin ein Gelegenheits-Webseitenschreiber nur zur eigenen Verwendung und nicht besonders informiert.

      Vielen Dank nochmal!

      Achim

      1. Hallo Achim,

        freut mich, wenn ich dir soweit schon mal helfen konnte.

        In welche Richtung würdest du mir raten zu gehen, wenn ich das derzeitige Layout von http://AchimT.flog.com ohne Frames aufbauen wollte - Tabelle, Layers?

        Das derzeitige Layout... naja, so wie ich es sehe, hast du ja ein sehr einfaches Layout: Links eine Navigationsleiste, daneben die eigentliche Hauptseite.
        Wobei ich mich gerade über die Navi-Leiste wundere: Warum ist oben so viel freier Platz? Ich muss die Leiste ungefähr um eine Bildschirmseite (geschätzt ca. 600px) runterscrollen, bis ich den ersten Eintrag "Trouble viewing a PTA replay" sehe. Lass das Zeug doch oben beginnen, sonst irritiert das die Leute.

        Aber zurück zur Frage: Wenn du wirklich nur ein "Gelegenheitstäter" bist und nicht die Absicht hast, tiefer in Webdesign & Co einzusteigen, ist die Frame-Lösung wahrscheinlich am einfachsten  für dich. Und wenn deine Besucher mit den Nachteilen leben können (Schwierigkeiten beim Ausdrucken von Seiten, man kann kein Bookmark auf eine Unterseite setzen), würde ich es vorläufig dabei belassen. Die erste Seite, die ich gebastelt habe (sozusagen eine meiner Jugendsünden), habe ich auch auf Frames aufgebaut. Das war vor sechs Jahren, und das Grundgerüst ist noch unverändert. Ich habe allerdings schon seit einiger Zeit den Vorsatz, das Projekt mal komplett zu überarbeiten. Wenn ich nur die Zeit hätte...

        Eine Alternativen zum Frame-Konzept ist, mit Tabellen zu arbeiten. Wenn ich das jetzt so erwähne, hagelt es wahrscheinlich gleich Kritik von den Profis, das sei eine Vergewaltigung der Idee von Tabellen und auch nicht viel besser als Frames. Recht haben sie, aber auch das Tabellen-Layout hat den Vorteil, dass es recht einfach zu realisieren ist - und die eben angesprochenen Nachteile von Frames fallen weg. Dafür musst du auf jeder einzelnen Seite wieder die komplette Navi wiederholen - als Fortgeschrittener würde man das mit einer serverseitigen Technik machen, für einen Neuling ist das wohl zunächst noch kein Thema. Zumal der Webhoster dann solche Dinge wie SSI oder PHP zulassen müsste. So wie ich deine Seite (auch nach ihrer URL) einschätze, ist das wohl eher so ein Gratis-Hoster, bei dem du nicht viele Möglichkeiten hast.

        Das beste wäre natürlich, wenn du schließlich auch noch von Tabellen als Layoutinstrument wegkommst und dich auf die Positionierung und Formatierung von Elementen durch CSS stützt. Die Nachteile für dich als Seitenersteller wären aber die gleichen wie beim Tabellenkonzept.

        Deshalb - auch wenn ich mir jetzt ein paar Ohrfeigen einhandle - ist es speziell in deinem Fall vielleicht das Beste, wenn du bei den Frames bleibst. Alles andere würde erfordern, dass du dich sehr viel intensiver mit der Materie befassen müsstest.

        So long,

        Martin

        PS: Fehlerfrei scheint deine Seite auf den ersten Blick auch nicht zu sein. Das erste, was ich im Hauptframe sehe, ist das Code-Fragment "</table". Da stimmt wohl einiges nicht... ;)

        1. hi,

          Das derzeitige Layout... naja, so wie ich es sehe, hast du ja ein sehr einfaches Layout: Links eine Navigationsleiste, daneben die eigentliche Hauptseite.
          Wobei ich mich gerade über die Navi-Leiste wundere: Warum ist oben so viel freier Platz? Ich muss die Leiste ungefähr um eine Bildschirmseite (geschätzt ca. 600px) runterscrollen, bis ich den ersten Eintrag "Trouble viewing a PTA replay" sehe. Lass das Zeug doch oben beginnen, sonst irritiert das die Leute.

          diese navigation ist sowieso total "kaputt":

          wechsel der seiten im inhaltsframe bei _mouseover_ der navigationspunkte - krank.

          und beim mouserover oder klicken der navigationspunkte weiter unten wird ein popup geöffnet - und onmouseout gleich wieder geschlossen. deshalb habe ich noch nicht mal die chance, es weiter nach oben zu schieben, um den inhalt vollständig sehen zu können - in meinem opera wird es nämlich sofort nach dem öffnen soweit nach unten geschoben, dass ich nur einen teil davon sehe.

          da war mal wieder, so scheint's mir, jemand so von den "tollen" spielmöglichkeiten, die javascript so bietet, derart begeistert, dass er darüber gar nicht mehr mitgekriegt hat, dass er absoluten murks fabriziert ...

          gruß,
          wahsaga

          --
          "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
          1. Hallo wahsaga,

            da war mal wieder, so scheint's mir, jemand so von den "tollen" spielmöglichkeiten, die javascript so bietet, derart begeistert, dass er darüber gar nicht mehr mitgekriegt hat, dass er absoluten murks fabriziert ...

            Oha... hab ich gar nicht gemerkt, ich hab nämlich sowieso kein JS aktiviert. Wäre mir das aufgefallen, dann hätte ich natürlich gleich versucht, Achim das Javascript auszureden.

            Aber JS-Sünden findet man auf sehr vielen Seiten, sogar (oder _gerade_) bei vielen professionellen Anbietern. Neulich habe ich eine lange Mail an die Betreiber von www.wetter.com geschrieben, weil das auch eine Seite ist, die ohne JS fast nicht mehr nutzbar ist. Und ein Impressum hat sie auch nicht. :-P
            Auf eine Antwort bin ich gespannt (hab das Schreiben erst gestern abgeschickt).

            Ciao,

            Martin

            1. Ich sollte wahrscheinlich mal etwas Literatur zum Thema lesen. Aber wie ich schon wahrsaga sagte - hier geht's um den Inhalt, den ich als Service für eine Community bereitstelle, und mit dem hab ich schon ziemlich viel Arbeit. Die Seitenerstellung ist Mittel zum Zweck und sollte eben schnell gehen.

              Und noch an wahrsaga gerichtet - es wäre schön wenn du auch was dazu gesagt hättest, wie ich es besser machen könnte, und warum das was ich gemacht habe deiner Meinung nach schlecht ist.

              So kann ich mit deinem Posting nicht viel anfangen.

              Achim

          2. Murks - naja, jeder hat ein Recht auf seine Meinung :)

            Den onmouseout hab ich verwendet, weil dieses Popup nie zuging. Also hab ich es halt so versucht, damit es nicht immer rumhängt und stört.

            Was das onmouseover angeht - ist sicher verspielt, aber ich biete diese Seiten als Service für eine Community an, und es geht nicht um die Seiten sondern den Inhalt, den zu produzieren mich eine Menge Zeit kostet. Da nehm ich mir das recht, ein bisschen Spass zu haben ( nur ein bisschen :)

            Achim

            1. hi,

              Was das onmouseover angeht - ist sicher verspielt, aber ich biete diese Seiten als Service für eine Community an, und es geht nicht um die Seiten sondern den Inhalt, den zu produzieren mich eine Menge Zeit kostet. Da nehm ich mir das recht, ein bisschen Spass zu haben ( nur ein bisschen :)

              gerade _wenn_ es "viel aufwand" ist, sollte man doch annehmen, dass du versuchst, den inhalt auch möglichst vielen leuten zugänglich zu machen ... anstatt durch solche javascript-spielereien dafür zu sorgen, dass ein teil sie sicher _nicht_ nutzen kann.

              gruß,
              wahsaga

              --
              "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
              1. gerade _wenn_ es "viel aufwand" ist, sollte man doch annehmen, dass du versuchst, den inhalt auch möglichst vielen leuten zugänglich zu machen ... anstatt durch solche javascript-spielereien dafür zu sorgen, dass ein teil sie sicher _nicht_ nutzen kann.

                Mir war bis gestern gar nicht bewusst, dass vielleicht irgendeiner die Site nicht nutzen kann. Es hat sich obwohl die Site schon ein paar Jahre existiert und recht gut frequentiert ist noch niemand dahingehend geäussert. Naja, das was ich da anbiete ist ziemlich begehrt, da machen sich die Leute wohl einfach die Mühe und schalten JS ein um ranzukommen.

                Was würdest du mir denn raten - in Richtung welcher Technologie soll ich mich umschauen, wenn ich die Frame/JS-basierte Umgebung zugunsten einer kompatibleren, aber auch gleichermassen einfach zu strukturierenden und zu wartenden Umgebung aufgeben möchte?

                1. hi,

                  Mir war bis gestern gar nicht bewusst, dass vielleicht irgendeiner die Site nicht nutzen kann. Es hat sich obwohl die Site schon ein paar Jahre existiert und recht gut frequentiert ist noch niemand dahingehend geäussert.

                  bestand denn überhaupt die _möglichkeit_ dazu?
                  will sagen, kriegt jemand, der deine seite ohne JS aufruft, wenigstens kontaktdaten deiner person o.ä. angezeigt?
                  und ich würde nicht davon ausgehen, dass die user, die sich wirklich die mühe machen, dem autor bescheid zu geben, dass seine seite für sie unnutzbar ist, in der mehrheit sind - eher ganz im gegenteil.
                  die meisten dürften sich nach der erkenntnis, "mit der seite kann ich nix anfangen", der "nächsten" seite im www zuwenden.

                  Naja, das was ich da anbiete ist ziemlich begehrt, da machen sich die Leute wohl einfach die Mühe und schalten JS ein um ranzukommen.

                  ich habe bis jetzt noch nicht verstanden, was genau du da eigentlich anbietest :-)

                  Was würdest du mir denn raten - in Richtung welcher Technologie soll ich mich umschauen, wenn ich die Frame/JS-basierte Umgebung zugunsten einer kompatibleren, aber auch gleichermassen einfach zu strukturierenden und zu wartenden Umgebung aufgeben möchte?

                  HTML und CSS für die präsentation der inhalte, JS allenfalls für _optionale_ gimmicks.
                  zur vereinfachung der erstellung für dich dann rückgriff auf eine serverseitige technologie wie PHP, Perl/CGI, und ggf. noch datenbankunterstützung.

                  gruß,
                  wahsaga

                  --
                  "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        2. Vielen Dank für den ausführlichen Rat. Ich bin schon durchaus willens es besser zu machen, aber aller Anfang ist halt schwer :)

          PS: Fehlerfrei scheint deine Seite auf den ersten Blick auch nicht zu sein. Das erste, was ich im Hauptframe sehe, ist das Code-Fragment "</table". Da stimmt wohl einiges nicht... ;)

          Welchen Browser verwendest du denn? Ich kann in Moz und IE diesen Fehler nicht sehen.

          Was den Menüframe angeht, der Text unten ist nur Zusatzinfo. Die eigentlichen Bedienelemente sind oben, die Grafiken 'Replays', 'Setups' und 'Sounds'.

          Achim

          1. Hallo,

            PS: Fehlerfrei scheint deine Seite auf den ersten Blick auch nicht zu sein. Das erste, was ich im Hauptframe sehe, ist das Code-Fragment "</table". Da stimmt wohl einiges nicht... ;)

            Welchen Browser verwendest du denn? Ich kann in Moz und IE diesen Fehler nicht sehen.

            Seltsam. Jetzt, nachdem ich diese Seite noch einmal aufgerufen habe, sehe ich es auch nicht mehr.
            Ich verwende übrigens im normalen Alltag den Internet Explorer 5.5 (und am Arbeitsplatz auch widerwillig den 6er). Ich hab dir hier mal einen Screenshot abgelegt (JPG 110kB), so wie _ich_ die Seite sehe. Beachte vor allem links die Navigationsleiste und wie weit ich sie runterziehen musste, bis ich den ersten Fitzel zu sehen bekomme.

            Was den Menüframe angeht, der Text unten ist nur Zusatzinfo. Die eigentlichen Bedienelemente sind oben, die Grafiken 'Replays', 'Setups' und 'Sounds'.

            Toll. Und die sehe ich überhaupt nicht.
            Merkst du was? Es gilt als schwerer Fauxpas im Webdesign, wenn man Javascript so einsetzt, dass bestimmte Funktionen ohne JS gar nicht mehr verfügbar sind. Wichtige Dinge wie die Navigation dürfen auf keinen Fall davon abhängen. Wenn du es nur für Komfortfunktionen, optische Spielereien oder Verzierungen einsetzt, ist das okay. Das sind Sachen, die man zur Not auch mal missen kann.

            Schönen Abend noch,

            Martin

            1. Hmm, naja - eigentlich setze ich das Javascript als Service für die Community ein.

              Die Hintergrundgrafik dieses Navi-Frames, die die Bedienelemente enthält, ist bei kleineren Bildschirmen zu gross. Also dachte ich, ich lade bei kleineren Bildschirmen eine kleinere Version davon.

              Ich werde sie mal zusätzlich wieder in den Body-Tag setzen, dann ist sie wenigsten auch dann da, wenn man JS deaktiviert hat.

              Danke für die Hinweise Martin, they're much appreciated!

              Achim

              1. Die Hintergrundgrafik dieses Navi-Frames, die die Bedienelemente enthält, ist bei kleineren Bildschirmen zu gross. Also dachte ich, ich lade bei kleineren Bildschirmen eine kleinere Version davon.

                Dann bist du dir aber hoffentlich auch darüber im Klaren, dass die Bildschirmauflösung nichts damit zu tun hat, wieviel Platz im Browserfenster zur Verfügung steht?
                Stichworte: Vollbild, Symbolleisten, Sidebars, virtueller Desktop...

                Ich werde sie mal zusätzlich wieder in den Body-Tag setzen, dann ist sie wenigsten auch dann da, wenn man JS deaktiviert hat.

                Ja... und die Links, die vermutlich dazugehören?

                Danke für die Hinweise Martin, they're much appreciated!

                You're welcome; I'm glad to see I could help.  ;)
                Have a nice evening,

                Martin

                1. Dann bist du dir aber hoffentlich auch darüber im Klaren, dass die Bildschirmauflösung nichts damit zu tun hat, wieviel Platz im Browserfenster zur Verfügung steht?

                  Ja, aber es ist immerhin besser als nix. Im Hauptfenster wechsle ich noch die Bilder je nach Screengrösse aus, das hilft schon ein bisschen.

                  Ja... und die Links, die vermutlich dazugehören?

                  Gibt keine Links. Wer JS deaktiviert hat, kann meine Site nicht benutzen - wie mir jetzt gerade klar wird. Ich habe noch nie daran gedacht, dass das ja gar nicht geht. Vielleicht sollte ich doch mal eine noscript-Seite bauen. Wären Layers da die Technik der Wahl, wenn man keine Tabellen verwenden will?

                  Komisch eigentlich dass sich noch nie einer beschwert hat. Die Site ist in einschlägigen Kreisen recht bekannt und wird viel besucht und es hat sich noch nicht einer darüber beschwert dass er nicht navigieren kann (und die Site ist schon seit etlichen Jahren online, obwohl ich erst in letzter Zeit angefangen hab, ein bisschen daran herumzubauen).

                  Die müssen wohl alle JS aktiviert haben.

                  Achim