Thomas: Seiten nur im Frame laden, niemals ohne den Frame

Hallo,

meine Problemstellung. Ich habe eine Seite gebaut mit Frame. Jetzt ist es natürlich blöd, wenn jemand den genauen Link zu einer von meinen Seiten öffnet, weil dann der Frameset nicht mitgeladen wird. und somit mein ganzes Design für den a**** ist.

jetzt habe ich mit folgendes überlegt.

index.html

<html>
<head>
</head>
<body>
<iframe src="main.html"></iframe>
</body>
</html>

main.html

<html>
<head>
<script language="JavaScript">
if(top == self)
{
  alert("test");
}
</script>
</head>
<body bgcolor="red">
</body>
</html>

anstatt dem alert könnte ich jetzt per php die index-seite aurufen und dabei die aktuelle location übergeben. und die index-seite trägt dann beim src den übergebenen wert ein.

allerdings weiß ich nicht wie fehlertollerant mein javascript ist. habe et zwar mit verschiedenen browsern getestet und hat immer geklappt. aber so sicher bin ich mir da noch nicht.

ich will mit so sachen auch sehr vorsichtig sein, den das javascript ist schließlich auf jeder seite die im frame geladen wird.

sieht jemand ein problem in dem code? wie könnte man ihn verbessern? gibt es ganz andere möglichkeiten dieses problem zu lösen? kennt jemand andere internetseiten wo dieses problem gelöst ist?

Danke

  1. Hi Thomas,

    meine Problemstellung. Ich habe eine Seite gebaut mit Frame. Jetzt ist es natürlich blöd, wenn jemand den genauen Link zu einer von meinen Seiten öffnet, weil dann der Frameset nicht mitgeladen wird. und somit mein ganzes Design für den a**** ist.

    Das liegt aber zweifelsohne an deinem Design, denn Frames für ein Layout/Design zu benutzen ist zwecksentfremdung, abgesehen davon, dass man von der Benutzung von Frames überhaupt abraten sollte.
    (-> </archiv/2004/11/t94430/#m571566>)

    sieht jemand ein problem in dem code? wie könnte man ihn verbessern? gibt es ganz andere möglichkeiten dieses problem zu lösen? kennt jemand andere internetseiten wo dieses problem gelöst ist?

    Nein, du könntest das rein theoretisch so verwenden, aber beachte, dass bei Leuten die JS deaktiviert haben das Ganze wiederrum nicht funktioniert.

    Ich habe das auch früher mal selber benutzt, noch zu sehen bei einem alten Projekt auf einer (noch) veralteten Homepage: http://www.riehle-web.com/pkprojekt. Allerdings ist da noch ein großer Nachteil drin, auch den man mich mehrfach aufmerksam gemacht hat, den ich aber noch nicht beseitig habe: Du musst das nachladen Zeitversetzt ausführen, denn sonst kommen IE User nicht mehr zurück, wenn sie im "Browser" auf "Zurück" klicken *gg* (tja, Userfang)

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
    Zufällige Hinweise:
    ------------------------
    That's life - Es gibt im Leben[tm] keine Zurueck-Taste. (Fabian Transchel)
    1. Ich muss dir Teilweise zustimmen. Eigentlich sind Frames eher doof. Aber mein design ist ohne frame nicht zu bewerkstelligen.

      kannst dir ja mal selber ein bild davon machen.

      www(punkt)thomasheiser(punkt)de

      das es bei leuten, die javascript deaktiviert haben nichts nutzt ist mir auch klar, aber es fügt ihnen auch keinen schaden zu. deshalb seh ich dort erstmal kein problem.

      ps: falls jemand ne idee hat wie ich meine seite ohne frame darstellen könnte bitte raus damit....

      1. Hi Thomas,

        Ich muss dir Teilweise zustimmen. Eigentlich sind Frames eher doof. Aber mein design ist ohne frame nicht zu bewerkstelligen.

        ps: falls jemand ne idee hat wie ich meine seite ohne frame darstellen könnte bitte raus damit....

        Erst mal Gegenfrage, was bitteschön ist denn daran ohne Frames nicht zu schaffen?

        Wenn du lediglich willst, dass das in der Mitte scrollt (Ist das wirklich so schön?) dann probiers lieber erst mal mit einem Div, dem du per Overflow (-> SelfHTML - CSS - Eigenschaften - Overflow) Scrollbalken zuweist.

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
        Zufällige Hinweise:
        ------------------------
        Probleme mit Formularen?
        http://tutorial.riehle-web.com hilft weiter.
        1. Wenn du lediglich willst, dass das in der Mitte scrollt (Ist das wirklich so schön?) dann probiers lieber erst mal mit einem Div, dem du per Overflow (-> SelfHTML - CSS - Eigenschaften - Overflow) Scrollbalken zuweist.

          MfG, Dennis.

          ich bin im moment erstmal sprachlos, das sowas funktioniert. das würde alle meine probleme lösen.

          jetzt frag ich mich nur wie das mit browserunabhänigkeit aussieht, und was ältere browser damit machen....

          auf jeden fall schonmal reisen dank.

          gruß Thomas

          1. Hi,

            jetzt frag ich mich nur wie das mit browserunabhänigkeit aussieht, und was ältere browser damit machen....

            Wenn Du nur mit CSS gestaltest, dann sehen ältere Browser halt das nackte, schmucklose HTML. Damit kann man leben - will es ggf. sogar.

            Problematisch bleibt ggf. der Navigator 4.x, der CSS nur sehr unzureichend unterstützt (OK, der IE auch, aber nicht hierbei). Das CSS kannst Du aber mittels import vor dem Nav 4 verstecken. Dann ist alles in Ordnung. 8-)

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      2. Hi,

        Aber mein design ist ohne frame nicht zu bewerkstelligen.

        Das sehe ich allerdings nicht so.

        Zwar würde das auf älteren Browsern nicht klappen, aber auf denen funktioniert die Site ja ohnehin nicht wie erwünscht (ältere Browser unterstützten nur Frames, keine IFrames).

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    2. Hi,

      abgesehen davon, dass man von der Benutzung von Frames überhaupt abraten sollte.

      Man sollte bei der Entwicklung sich halt ein paar Gedanken machen. Dann klappt es auch mit Frames (-> http://forum.de.selfhtml.org/archiv/2004/7/84595/#m496300)

      Und das ist prinzipiell auch bei *jeder* Technik angesagt ... =;-o

      Du musst das nachladen Zeitversetzt ausführen,

      Das muß man keineswegs. Man muß nur die *richtigen* Techniken mit Überlegung einsetzen. Und sowohl JS als auch PHP erlauben eine sofortige Umlenkung ohne Probleme (-> Coding: Seitenumlenkung)!

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      1. Hi Cybaer,

        Du musst das nachladen Zeitversetzt ausführen,

        Das muß man keineswegs. Man muß nur die *richtigen* Techniken mit Überlegung einsetzen. Und sowohl JS als auch PHP erlauben eine sofortige Umlenkung ohne Probleme (-> Coding: Seitenumlenkung)!

        Stimmt, mit location.replace() würde das gehen - wobei man es IMHO auch genauso gut mit location.href() und Zeitversatz machen könnte.

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
        Zufällige Hinweise:
        ------------------------
        Meine Homepage: http://www.riehle-web.com
        Tutorial: http://tutorial.riehle-web.com
        1. Hi,

          wobei man es IMHO auch genauso gut mit location.href() und Zeitversatz machen könnte.

          Genauso gut? IMHO nicht. Schlechter? Allerdings. Funktionabel? Ohne jede Frage. ;-)

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Hi,

    anstatt dem alert könnte ich jetzt per php die index-seite aurufen und dabei die aktuelle location übergeben. und die index-seite trägt dann beim src den übergebenen wert ein.

    Du meinst, die rufst die Startseite mit JavaScript auf, die wiederum den passenden Frame-URL einträgt?

    allerdings weiß ich nicht wie fehlertollerant mein javascript ist.

    Das bissel? Ist zwar eine sehr kurze Schreibweise, aber geht in Ordnung.

    gibt es ganz andere möglichkeiten dieses problem zu lösen?

    Wenn Du ohnehin mit PHP arbeitest: Laß den Content der Frameseite doch einfach im NOFRAMES/IFRAME-Bereich ausgeben. Und den Zugriff auf die Frameseiten sperrst Du für die Suchmaschinen mittels META-Tag und robots.txt. Dann finden Suchmaschine und Surfer nur das Frameset und das "Problem" stellt sich gar nicht erst. 8-)

    kennt jemand andere internetseiten wo dieses problem gelöst ist?

    Z.B. meine. ;-) Aber mit JavaScript-Weiterleitung auf eine PHP/JS-Startseite, da die Site auch offline funktionieren soll und sich die Site ohnehin zum größten Teil um JS-Programmierung dreht (der PHP-Teil ist halt trotzdem für JS-lose Surfer). :)

    Die zweite Variante habe ich aber auch schon umgesetzt ...
    ... und tue es gerade wieder. :->

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!