Kompl. Frameset-Nachladung?

Ginchen

Grünschnabel
Hallo ihr!
Erstmal hallo und ein dickes Kompliment an den Webmaster - ein tolles Forum! Habe mich auch schon ein wenig durchgeklickt, aber eine Lösung habe ich immer noch nicht.

Bitte schlagt mich nicht, wenn die Geschichte mit dem Frameset-Nachladen schon x Mal gefragt wurde und ich nun auch wieder ankomme. :-) Nur leider beziehen sich die Skripte immer auf Framesets mit nur 2 Seiten/Frames. :(


Also, ich habe eine Website, die aus einem grossen Frame mit insgesamt 4 Frames besteht: oben + unten und dann mittig: links + body (mal einfach ausgedrückt).

Wenn meine Site durch Suchmaschinen gefunden wird, z.B. nur die body-Datei, dann fehlt natürlich der gesamte Frame und die einzelen Seite sieht beschissen aus... oben, unten und links fehlen.
(Es ist ja nicht jeder so bewandert, dass er einfach nur oben in der Adresszeile die Url etwas abändern muss, um auf die Startseite zu gelangen.)

Mit dem Nachladen ist das ja so ne Sache; der Browser weiss ja nicht, in welchem Frame die ursprünglich aufzurufende Seite geladen werden soll, oder?

Was kann ich tun? Habt ihr Lösungen? Vielleicht eine sofortige Umleitung auf die komplette Startseite, wenn gecheckt wurde, dass eine einzelne Seite ohne Frame geladen werden soll?
Ich will natürlich, dass die body.html (z.B.) nur umgeleitet wird, wenn sie ohne Frame geladen wurde. Geht das??


Würde mich sehr über Hilfestellungen freuen!!
 
5 Sekunden in Google und ich hatte die
Lösung inkl. ausführlicher Beschreibung ;)

-----------------------------------------------------

Suchmaschinen registrieren stets nur einzelne HTML-Dateien und keine Framesets. Dadurch landen Surfer häufig auf Web-Seiten, zu denen eigentlich noch ein Frameset gehört. Hier möchte ich ein JavaScript vorstellen, dass dies wirkungsvoll verhindert.

Ich gehe im folgenden von einer typischen Frameset-Homepage aus, die aus einem Inhalts-Frame und einem oder mehreren Navigations-Frames besteht. Aus den letzteren führen Verweise zu den Inhalts-Seiten, die im Inhalts-Frame geladen werden.

Stellen Sie sich vor, ein Besucher findet in den Ergebnissen einer Suchmaschinensuche eine Ihrer Inhalts-Seiten. Wenn er dieses Ergebnis anklickt, wird die Inhaltsseite ohne Frameset geladen.
Der ganze Trick besteht nun darin, per JavaScript zunächst zu überprüfen, ob das Frameset geladen wurde. Wenn es nicht geladen wurde, wird es aufgerufen, und die zuvor einzeln aufgerufene Seite automatisch im Inhalts-Frame nachgeladen.

Das erste Skript kommt in den head-Teil aller Inhalts-Seiten (und auch in die Startseite des Inhalts-Frames):
PHP:
<script language="JavaScript">
<!--
function FramesetTest() {
if (top.frames.length==0) {
  Address="[Frameset-Datei]?[Inhaltsseite]";
  if(document.images) top.location.replace(Address);
  else top.location.href=Address;
  }
}
//-->
</script>
Es wird durch das Attribut onLoad=, dass in das body-Tag der selben Inhaltsseite gehört, aufgerufen: <body ... onLoad="FramesetTest()">

Das zweite Skript kommt in den head-Teil einer Navigations-Seite, die mit dem Aufruf der Frameset-Datei geladen wird:
PHP:
<script language="JavaScript">
<!--
function Jump() {
if (top.location.search!="") {
  var Size=top.location.search.length;
  var Address=top.location.search.substring(1,Size);
  if(document.images)
   top.[Inhalts-Frame].location.replace(Address);
  else top.[Inhalts-Frame].location.href=Address;
  }
}
//-->
</script>
Auch dieses Skript wird im body-Tag aufgerufen, und zwar mit:
<body ... onLoad="Jump()">

Alles was Sie nun noch verändern müssen, sind die Dateinamen im ersten Skript und der Frame-Name im zweiten:
[Frameset-Datei] steht für die Datei, die das komplette Frameset enthält.
[Inhaltsseite] ist die jeweilige Datei, in der das erste Skript steht.
[Inhalts-Frame] ist der Frame-Name des Inhalts-Frames.

Ein Hinweis: Befindet sich die Inhaltsseite nicht im selben Verzeichnis wie die Frameset-Datei, müssen die entsprechenden relativen Pfadangaben eingesetzt werden.
[Frameset-Datei] ist also der relative Pfad von der Inhalts-Seite zur Frameset-Datei.
[Inhaltsseite] ist der relative Pfad von der Frameset-Datei zur Inhalts-Seite zurück.

Das Frameset-Nachlade-Skript nutzt übrigens JavaScript 1.0 und ist damit kompatibel zu Netscape ab Version 2 und Internet Explorer ab Version 3.

-----------------------------------------------------

Quelle: http://www.starhtml.de/frameset.htm

Viel Spaß :)
 
Hallo,

ja das ganze ist schon einleuchtend, wie geht das jedoch mit folgender konstellation:

ich setze das Framebuster Script von Massimo für Dreamy ein, was wirklich gut funzt - ABER rufe ich zum Beispiel eine PHP-Seite auf, die eine andere seite generiert und somit selbst Urlparameter im Anhängsel hat, funzt es nicht mehr... Das Frameset wird drumherum geladen, nur die Seite selbst erhält eine falsche Url:

es sieht dann so aus: der Pfad der erzeugten PHP-Datei ist folgender:
http://www.meine.de/interaktiv/newsletter/datei.php
der pfad des Framesets ist folgender:
http://www.meine.de/layout/layout.htm

folgender 404 fehler kommt dann:
die seite: http://www.meine.de/layout/interaktiv/newsletter/datei.php gibts nicht. Logisch, denn der Pfad zur PHP-Datei ist ja ein anderer...

Der javascriptaufruf in der php-datei lautet:
Code:
<
<script language="javascript" type="text/javascript">
if (window.name!='m2' && window.name!='booker_'
		 && !((self.innerHeight == 0) && (self.innerWidth == 0)))
		top.location.replace('../../layout/layout.htm?interaktiv/newsletter/mailingliste.php~m2');

wie gesagt, das klappt bei allen dateien, nur bei dynamisch aufgerufenen nicht... dann stimmt irgendwie die Url nicht mehr. Warum?
 
Wenn ich es richtig verstanden habe musst du wieder eine Ordnerebene tiefer.

top.location.replace('../../layout/layout.htm?../interaktiv/newsletter/mailingliste.php~m2');
 
thanks ...

Jo das wars: DER eine slash ... :-)

hab ich glatt übersehen, danke! Jetzt klappt das mit allen Dateien, die wo auch immer liegen.

Aber nun kommts: Die Haupt php-datei mailingliste.php erzeugt ja je nach Funktion dynamisch erzeugte Unterdateien im Stile von:

http://www.meine.de/interaktiv/newsletter/mailingliste.php?mail=3&email=info@xyz.de&name=MaxMuster

, die dann der User nach Hause im mailprogramm anklicken kann, um sich aus oder einzutragen. Der Aufruf des Links dann lädt zwar das frameset, aber nur die "nackige" mailingliste.php ...

Wie bekommt man das nun hin, dass dann auch die vorgegebenen Paramter mit drangehangen werden. Geht dann wahrscheinlich nur über direkter PHP-Codeanpassung, oder? Das ist jedoch nicht unbedingt mein Ding...
Meinungen???
 
sorry ...

... für die längere ignoranz meinerseit ...

war ne weile im urlaub - puh war das anstrengend ...:-(

als das mit dem Tuthinweis verstehe ich nich, is mir zu hoch.
Habe jetzt in den zuständigen PHP-dateien die ScriptUrls angepasst so nachdem Motto http://meine.de/frameset.htm?script/script.php

das einzige was mich jetzt bissl stört ist, dass die Links in den Usermails ziemlich lang sind und abgeschnitten werden könnten ... da das dann ja so ungefähr aussieht:
http://meine.de/frameset.htm?script/script.php?blabalablablbla...
 
Bei mir will das einfach nicht funktionieren:

Mein Frameset ist so aufgebaut:

Oben.html: Menü

Unten.html: Enthält 3 Frames, in der Mitte der Inhalt, und rechts und links sind zwei freie Spalten für Werbung etc…

In der eigentlichen index.html werden aber nur 2 Frames festgelegt (nämlich Oben.html und Unten.html), die anderen Frames enthält ja die Unten.html.

(siehe: http://www.DT125.de)

Wo muss ich jetzt welchen Code einfügen, damit die Frames nachgeladen werden

Hab Testweise mal den Navigations-Code in die index.html eingefügt, nur dann lässt sich diese garnicht mehr öffnen (weißer Bildschirm)

Danke schonmal!
 

Neue Beiträge

Zurück