Zur Navigation

Nachladen von Inhaltsseiten bei framesets

1 Mario

das Problem bei Frameset-Seiten besteht darin, dass die Suchmaschinen die einzelnen Frames versuchen zu spidern und dann auch einzeln im Index ablegen. Der Surfer hingegen sieht eine Komposition aller Frames und bekommt zu sehen was er vom Anbieter erwarten darf, nämlich eine komplette Seite bestehend aus allen Frames. Wenn nun beispielsweise die Inhaltsseite in den Serps gut gelistet ist, die Suchenden draufklicken, bekommen sie nur die Inhaltsseite zu sehen. Der ganze übrige Teil wie top-frame, left-frame etc. fehlt. Um diese fehlenden Elemente nachladen zu können, bedient man sich ein paar js-Zeilen. Wie das geht, versuche ich hier mal an einem Beispiel zu erläutern:

Begriffserklärungen:

Inhaltsseite=mainframe

Original-Frameset
, in unserem Fall oriset.html genannt = Seite die alle Frames zu einer Seite komponiert

Hilfs-Frameset: Kopie des Original-Framesets (oriset.html) mit anschliessender Ausdünnung unnötiger Elemente und Umbenennung in rel.html

schlanke Seite: normale .html-Seite mit minimaler Info bezüglich dem Nachladen (relinfo.html)

nachladen.js = js-script welches das nachträgliche Nachladen der Frames ermöglicht, falls eine Inhaltseite direkt aufgerufen wird.

Was ist zu tun:

1) jede Inhaltsseite (mainframe) bekommt folgendes zusätzliches Script in den head-Bereich integriert:

inhalt1.html, inhalt2.html etc…..

<script language="JavaScript" src="/nachladen.js" type="text/javascript"></script>
<script language="JavaScript"><!--
FrameCheck(); //--></script>
<base target="mainFrame">

2) erstelle eine schlanke html-Seite mit dem Text "Frameset nachladen" oder so ähnlich, benenne sie relinfo.html.

relinfo.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta name="robots" content="noindex, nofollow">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
Frameset nachladen
</body>
</html>


3) mache eine Kopie Deiner Original-Framesetseite benenne sie rel.html und entferne auf der Kopie alles was im noframesbereich ist, ergänze sie mit der meta-Zeile <meta name="robots" content="noindex, nofollow"> , damit sie nicht gespidert wird. Ändere die Zeile mit der mainframe-Angabe ab und ersetze sie mit der zu ladenden schlanken Seite (relinfo.html). Beispiel:

rel.html
<frameset rows="80,*" cols="150,*" frameborder="NO" border="0"
framespacing="0" onload="LoadFrame();">
<frame name="cornerFrame" scrolling="NO" noresize src="./frames/corner.html" >
<frame name="topFrame" scrolling="NO" noresize src="./frames/topframe.html" >
<frame name="leftFrame" scrolling="NO" noresize src="./frames/leftframe.html">
<frame name="mainFrame" src="relinfo.html">
</frameset>

......

4) erstelle folgende .js-Seite und benenne sie nachladen.js

framename="mainFrame";
frameset="/rel.html";

function FrameCheck() {
if(!eval("parent."+framename)) {
location.replace(frameset+"?"+location.pathname+location.search); }
}

function LoadFrame() {
var URL=location.search;
if(URL) {
frame=eval("frames."+framename);
frame.location.replace(URL.substring(1,URL.length));
}
}


Fertig ist der Zauber. Wenn Du nun auf eine halbnackte Inhaltsseite klickst, werden alle benötigten Frames nachgeladen und der Besucher erfreut sich über Deine hoffentlich schöne und komplette Seite. In einem bekannten Forum wurde diese Methode auch schon behandelt. Leider funktioniert die dort veröffentlichte Version überhaupt nicht. Unser Troubleshooter- Jörg musste tüchtig Hand anlegen, wofür ich ihm bestens danke.

Viel Spass beim Reloaden


schöne Grüße von Mario

14.06.2006 13:20

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]