Seiten innerhalb von Frames anzeigen
Mikel
Ich suche nach dem Code, wie ich Webseiten innerhalb eines Frames anzeigen lassen kann. Meine Homepage besteht aus Frames, viele User kommen jedoch über Google und finden daher nur die Unterseiten ohne Navigation und Titel Wie schaffe ich es dass diese Unterseiten immer direkt im Hauptframe angezeigt werden?
Vielen Dank für die Hilfe.
GreenRover
Das ganze nennt sich Frameset nachladen und du findest es hier:
http://keine-angst-vorm-pc.de/beispiele/...aden/index.html
wobei wenn du auf die Inhaltseite gehen würdest:
http://keine-angst-vorm-pc.de/beispiele/...den/inhalt.html
da kaum merkbar das Frameset nachgeladen bekommst.
Zum einbau in deine Seite:
erstmal zur index Seite mit dem Frameset:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
|
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="Javascript" type="text/javascript">
<!--
function FramesetNachladen()
{
if(top.location.search!="")
{
var Add=top.location.search.substring(1, top.location.search.length);
if(document.images)
{
top.Inhalt.location.replace(Add);
} else {
top.Inhalt.location.href=Add;
}
}
}
//-->
</script>
<title>Frameset</title>
</head>
<frameset cols="20%,80%" onLoad="javascript:FramesetNachladen();">
<frame src="meneu.html" name="Navi">
<frame src="inhalt.html" name="Inhalt">
</frameset><noframes></noframes>
</html> |
|
Dieser Teil ist dazu, das nicht nur das Frameset geladen wird, sondern auch die geöfnette seite wieder im Frame geladen wird.
Dort muss einfach nur das Javascript in den head bereich eingefügt werden .
dazu muss in den Zeilen:
top.
Inhalt.location.replace(Add);
} else {
top.
Inhalt.location.href=Add;
des Javascriptes daruaf geachtet werden das das Inhalt über einstimmt mit den Namen des Haptframes, der nach zu laden ist:
<frame src="inhalt.html" name="
Inhalt">
nun noch das
<body onLoad="FramesetNachladen();">
</body>
unterhalb des Frameses setzen, damit das script auch aktiviert wird.
###############################################
So nun kommen wir zu den Einzelnden Inahltsseiten. Da der nun folgende code in JEDE inhaltsseite eingefügt werden muß.
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
|
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="Javascript" type="text/javascript">
<!--
function FramesetUeberpruefen()
{
var Add="index.html?" + this.location;
if(top.frames.length==0)
{
if(document.images)
{
top.location.replace(Add);
}
else
{
top.location.href=Add;
}
}
}
//-->
</script>
<title>Inhalt</title>
</head>
<body >
Inhalt
</body>
</html>
|
|
Hier muß wiederum das Javascript in den Head bereich getahen werden.
und falls Ihre Seite aus mehreren unterordnern besteht, ist es ratsam, wenn sie in folgender Zeile anstat indext.html die komplette URL zu ihrer seite schreiben.
var Add="
index.html?" + this.location;
wird dann zu:
var Add="
http://keine-angst-vorm-pc.de/beispiele/frameset-nachlade
n/index.html?" + this.location;
wobei das ? umbedingt bestehen bleiben muß!
Nun noch in den Body-Tag das
<body
onLoad="FramesetUeberpruefen();">
einfügen und Sie haben es geschafft.
Mikel
Ey genial, danke für die ausführliche Antwort.
Ich habe es versucht und nach längerem hin und her hat es tatsächlich funlktioniert. Ich vermute aber dass des nicht klappt, bei Usern die Java deaktiviert haben, ne?
GreenRover
Genau das trifft zu, da man eigentlich nur JavaScript als Client orientierte Sprache hat, die Alle Browser und Betriebssysteme akzeptieren.
doch leider haben viel Internetuser Javascript deaktiviert, da sie unberechtigter weise Angst haben, vor Atacken über dieses ( kann beim IE 5 auch zu treffen (-; )
Deshalb geht das Script leider nur bei den Usersern, die JavaScript aktiviert haben.
Gockel
Ich habe bei mir folgendes genutzt:
| php: |
1:
2:
3:
4:
5:
|
<?php <script language="JavaScript">
<!--
if (top == self) self.location.href = "index.htm";
// -->
</script> ?> |
|
Dein Code ist aber viel Umfanreicher, gibt es aus Sicherheitsgründen oder wegen den Suchmaschinen einen Grund dafür?
GreenRover
Nein, deins ist zwar die minimalversion, hat jedoch den nachteil, das immer nur die Start Seite des Frames geladen nicht, also nicht die Seite die in der Scuhmaschien gefunden wurde.
Das heist, man landet imemr auf der Startseite, egal wo der Link hinzeigt.
Und genau das Problem um geht meine etwas umfangereiche Version.
Gockel
Bei meiner Version wird die Startseite des Frames geladen, innerhalb des Frames wird dann aber die von der Suchmaschine gefundene Seite angezeigt. Ich meinte zumindest das dies so ist, werde es nachher gleich nochmals testen.
GreenRover
Ja das stimmt so.
Aber, wenn man in der suchmaschiene den Frameinhalt findet für die unterseite xyz und diese halt ohne Frame öffnet, wird man auf die Startseite geleitet durch das Script.
Das ist halt das Problem.
pruzi
ohne deine Hilfe hätte ich das Frame-Problem nicht so leicht gelöst. Funktioniert übrigens auch mit Iframes wunderbar.
LG Pruzi.
Silent Bob
Hallo,
ich habe die beiden Skripte in meinen Seiten eingebaut, aber trotzdem wird die direkt aufgerufene Seite nach dem Laden des Framesets nicht im Mainframe nachgeladen?! Irgendwas habe ich wohl falsch gemacht, aber was?
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Willkommen beim ATC</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="Javascript" type="text/javascript">
<!--
function FramesetNachladen()
{
if(top.location.search!="";)
{
var Add=top.location.search.substring(1, top.location.search.length);
if(document.images)
{
top.mainFrame.location.replace(Add);
} else {
top.mainFrame.location.href=Add;
}
}
}
//-->
</script>
</head>
<frameset rows="110,*" cols="*" frameborder="NO" border="0" framespacing="0">
<frame src="top.htm" name="topFrame" scrolling="NO" noresize >
<frameset rows="*" cols="148,*" framespacing="0" frameborder="NO" border="0">
<frame src="navi.htm" name="leftFrame" scrolling="AUTO" noresize>
<frame src="home.htm" name="mainFrame">
</frameset>
</frameset>
<noframes><body>
</body></noframes>
<body onLoad="FramesetNachladen();">
</body>
</html>
|
|
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
|
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script language="Javascript" type="text/javascript">
<!--
function FramesetUeberpruefen()
{
var Add="start.htm?" + this.location;
if(top.frames.length==0)
{
if(document.images)
{
top.location.replace(Add);
}
else
{
top.location.href=Add;
}
}
}
//-->
</script>
<title>mainFrame</title>
</head>
<body onLoad="FramesetUeberpruefen();">
mainFrame
</body>
</html>
|
|
Silent Bob
Hallo nochmal,
ich habe mal Deine Codes in einen neuen Frame eingefügt, und es klappt. Der einzige Unterschied, der zu meiner Seite auffällt, ist, daß ich nicht 2, sondern 3 Frames habe, also nicht nur links und Inhalt, sondern links, oben und Inhalt.
Liegt es daran, daß das Script so nicht funzt? Und falls ja, kann man das entsprechend modifizieren?
Grüße
SB
GreenRover
Nein, das ist egal, es kommt auf das
name="mainFrame"
im Frameset an.
Silent Bob
Hi,
danke für die Antwort! Aber funktionieren tut es trotzdem nicht; irgendeine Ahnung, warum? Konntest Du vielleicht einen Fehler im Script entdecken?
Wobei ich nur strg© gemacht habe, und die Variablen wie beschrieben abgeändert habe.
Wäre über jede Hilfe dankbar, falls erlaubgt im Forum würde ich auch meine domain verlinken, ist eine Tennis-Vereinsseite.
Grüße
SB
GreenRover
also ich habe deien scripte mal so getestet und kann nur sagen das es geht.
Hast du das ganze online das man es da nochmal überprüfen kann??
entweder die dateinamen stimmen nicht überein und / oder du hast es nicht im selben verzeichniss??
Silent Bob
Hi,
ja, ist online:
www.atc.de
www.atc.de/start.htm
und der Test unter
www.atc.de/termine.htm
Wenn ich auf der Startseite den Button Termine anklicke, erscheint die Seite im Frame.
Wenn ich die Seite
www.atc.de/termine.htm im Browser eingebe, sieht man kurz die Seite Termine ohne Frames, dann die Umleitung auf die Startseite, von da aus aber eben kein Nachladen von Termine mehr.
Grüße
SB
GreenRover
hmm ich kann dir echt nicht weiterhelfen, bei mir geht es :-p
im IE und im FF, also das muß definitv an dir liegen.
Hast du auch mal bei beiden seiten F5 gedrückt um den Browser-Cache zu leeren???
Silent Bob
Wie?!
Du meinst, wenn Du
www..../termine.htm eingibts, öffnen sich in Deinem Browser die Frames, und auf der Seite im Mainframe steht "Mainframe" als Text???
Verstehe ich nicht...
Habe sowohl in Opera, als auch im IE und bei FF getestet, und gerade auch mal F5 gedrückt, und das sowohl zu Hause als auch im Büro
Silent Bob
So, habe mir jetzt im Büro frisch und jungfräulich FF 1.5 installiert, da kann ja nix im Cache oder sonstwo rumfliegen, oder?!
Das Ergebnis ist leider das Selbe... nach Eingabe der URL
www.atc.de/termine.htm kommt die URL
www.atc.de/start.htm, ohne daß die Seite termine.htm nachgeladen wird....
Das gibt's doch gar nicht *verzweifel*...
GreenRover
OK beim Test im Opera habe ich ebend entdeckt das ja garnicht die richtge Seite geladen wird.
änder mal das Framset auf um:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Willkommen beim ATC</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<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.mainFrame.location.replace(Address);
else top.mainFrame.location.href=Address;
}
}
//-->
</script>
</head>
<frameset rows="110,*" cols="*" frameborder="NO" border="0" framespacing="0" onLoad="javascript:Jump();">
<frame src="top.htm" name="topFrame" scrolling="NO" noresize >
<frameset rows="*" cols="148,*" framespacing="0" frameborder="NO" border="0">
<frame src="navi.htm" name="leftFrame" scrolling="AUTO" noresize>
<frame src="home.htm" name="mainFrame">
</frameset>
</frameset>
<noframes></noframes>
</html> |
|
Dann passt es.
Silent Bob
Hallelujah!!!!!
Es geht!!
Tausend dank!
Nur, um nicht dumm zu sterben - was genau hast Du verändert?
Grüße
SB