IT-Academy Logo
Sign Up Login Help
Home - Internet - Webdesign - HTML - Unbedingter Frameset bei Webseiten



Unbedingter Frameset bei Webseiten

Jeder, der schon eine Webseite mit einem Frameset erstellt hat, wird das Problem kennen: wird auf eine Seite gelinkt, zB. von einer Suchmaschine, die eigentlich z.B. in den Haupt-Frame geladen werden sollte, wird nur die Seite ohne Frameset dargestellt. Mit einem einfachen Javascript-Code lässt sich dieses Problem leicht lösen!


Autor: Robert Sarkezi (picard)
Datum: 01-05-2002, 10:51:54
Referenzen: Keine.
Schwierigkeit: Anfänger
Ansichten: 3960x
Rating: 6 (3x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Einleitung

Es gibt zwar mehrere Ansätze um einen unbedingten Frameset zu erzwingen, hier werde ich jedoch die eleganteste Möglichkeit vorstellen. Die erste Voraussetzung ist einmal, dass man eine Seite mit einem Frameset erstellt. Die Bezeichnung der Frames sollte nur durch Kleinbuchstaben erfolgen, da es sonst zu Problemen mit dem Script kommt. Hier ein Beispiel:

Beispiel für einen Frameset

Seite mit dem Frameset

Auf der obigen Grafik sieht man ein Beispiel für den Frameset. Zu beachten ist, dass für den "mainframe" eine Seite, die "blank.htm" heißt, angelegt werden muss. Obwohl es eine leere Seite ist, sollte sie denoch die Hintergrundfarbe der übrigen Seiten haben. Dies hat den Effekt, dass der Hintergrund im spezifischen Frame nicht Weiß bleibt, wenn es länger dauert bis die entsprechende Seite geladen wird.

<frameset rows="80,*" cols="*" frameborder="NO" border="0" framespacing="0">
<frame name="topframe" scrolling="NO" noresize src="topframe.htm" >
<frameset cols="80,*" frameborder="NO" border="0" framespacing="0">
<frame name="leftframe" noresize scrolling="NO" src="leftframe.htm">
<frame name="mainframe" src="blank.htm">
</frameset>
</frameset>

Danach wird der folgende Script zwischen den beiden <head>-Tags eingefügt, wobei die Werte für den "mainframe" und "main.htm" entsprechend angepasst werden müssen. Sie könnten z.B. auch "mframe" und "start.htm" heißen, je nachdem wie die Bezeichnung lautet.

if (self != top) // frame buster
top.location.replace(self.location);

var theDefault = 'main.htm';
var theFrame = 'mainframe';
var thePage = theDefault;
var framedPage = location.search.toLowerCase();
if (framedPage.length > 1){
framedPage = framedPage.substring(1);
var theSplit = framedPage.lastIndexOf('~');
if (theSplit != -1){
thePage = framedPage.substring(0,theSplit);
theFrame = framedPage.substring(theSplit+1);
}else
thePage = framedPage;
}

function frameStuffer(){
eval('top.'+theFrame+'.location.replace("'+ thePage +'");');
if (theFrame != 'mainframe'){
top.mainframe.location.replace(theDefault);
theFrame = 'mainframe';
}
}

Als letzten Schritt muss noch die Funktion im äußeren Frameset aufgerufen werden:

<frameset rows="80,*" cols="*" frameborder="NO" border="0" framespacing="0" onLoad="frameStuffer()">

Seiten für den Frameset

Der folgende Script muss zwischen den beiden <head>-Tags eingefügt werden, welche nun in den Frameset geladen werden sollen. Zu beachten ist, dass die entsprechenden Seiten verwendet werden müssen für

  • die Datei, welche den Frameset enthält - in diesem Fall: "index.htm"
  • die Datei, welche in den Frameset geladen werden soll - in diesem Fall: "start.htm" und letztendlich
  • den Frame, in welchen die Seite geladen wird - in diesem Fall: "mainframe"

<script>
if (window.name!='mainframe'
&& !((self.innerHeight == 0) && (self.innerWidth == 0)))
top.location.replace('index.htm?start.htm~mainframe');
</script>

Für die Seiten, welche z.B. in den "leftframe" oder "topframe" geladen werden sollen, würde es z.B. so aussehen:

<script>
if (window.name!='leftframe'
&& !((self.innerHeight == 0) && (self.innerWidth == 0)))
top.location.replace('index.htm?left.htm~leftframe');
</script>

oder

<script>
if (window.name!='topframe'
&& !((self.innerHeight == 0) && (self.innerWidth == 0)))
top.location.replace('index.htm?top.htm~topframe');
</script>

Viel Glück!



[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06246
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1154
Comments: 0