Anmelden, um zu folgen  
Folger 0
Gast

Seite nur mit Frameset laden?

9 Beiträge in diesem Thema

Hallo,

ich habe das Problem, dass Seiten teilweise ohne Frameset geladen werden, da diese von Suchmaschinen durchsucht wurden.

Dass sie gefunden werden, das ist ja sehr gut, nur sollten sie dann in dem Frameset geladen werden.

Ich habe das folgendermaßen gelöst:

<!-- File is only loaded with frameset -->

<script language="JavaScript">

<!--

if(top.frames.length <= 0)
top.location = "http://www.xxxxxxx.de/forward.html";

//-->

</script>


Das ist jedoch nur ein Teilerfolg!!!

Ich hätte nemlich gerne, dass in dem Frameset dann auch die Seite geladen wird, die der Besucher gewählt hat. Sonst macht er die Seite ja gleich wieder zu, da der gewünschte Inhalt nicht gefunden wird.

Meine Überlegung ist, in der Datei eine Variable mit dem Pfad zu erzeugen, diese dann an die Frameseite zu übergeben. Diese zeigt dann das Framset mit der richtigen Seite an.

...oder irgend wie anderst eben. ABER WIE???

Danke für Eure Hilfe

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Hier der Code für die Seite, welche in das Frame verpackt werden soll:
QUOTE

<script language="JavaScript">
    if(top==self)
    {
    top.location.href="http://www.xyz.ch/frames.htm?"+self.location.href
    }
</script>


Da das "?" und der nachfolgende Text vom Server nicht ausgewertet wird, übergeben wir die aktuelle Adresse einfach dahinter....

Die Seite mit der Frame-Definition (also frames.htm) sieht folgendermassen aus:
QUOTE

</script>
  <script language="JavaScript">
    if (self.location.href.indexOf("?")>-1)
    {
    Start=self.location.href.indexOf("?")+1;
    Ende=self.location.href.length;
    dieSeite=self.location.href.substring(Start,Ende);
    }
  </script>

<frameset cols="162,*" framespacing="0" border="0" frameborder="0">
  <frame name="Links" scrolling="no" noresize target="ROben" src="http://www.xyz.ch/navi.htm" marginwidth="0" marginheight="0">
  <frameset rows="68,*">
    <frame name="ROben" target="RUnten" src="Ad/org.htm" scrolling="no" marginwidth="0" marginheight="0">
    <frame name="RUnten" src="reload.htm" target="RUnten" scrolling="auto">
  </frameset>
  <noframes>
  <body>

Die Seite reload.htm muss wieder in der Lage sein, die urspüngliche Seite nachzuladen (die URL ist mittlerweile in "dieSeite" gespeichert):
QUOTE

<script language="JavaScript">
    if (top.dieSeite) self.location.href=top.dieSeite;
</script>

Du brauchst also mindestens zwei zusätzliche Seiten, damit es klappt....

Selbstverständlich ist Dir selbst überlassen, wie Du die Frames anordnest und die Seiten benennst... wink.gif
Ich bin mir auch sicher, dass es noch eine kürzere Variante gibt...
Selbst nehme ich mittlerweile von Frames Abstand und steige auf Server Side Includes um... Das erspart doch viel JAVASCript-Gewürge...

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
folgendes habe ich gefunden:

QUOTE

Stellen Sie sich vor, eine Ihrer Seiten wird separat aufgerufen,
beispielsweise vom Link einer Suchmaschine.
Diese Seite wird separat dargestellt und nicht wie gewollt in einem Frame.

Diese Lösung zeigt, wie man das Laden in einem bestimmten
Frame erzwingen kann.

Inhalt der index.htm: 
<html>
<head>
<title>Frame erzwingen</title>
</head>
<script language="JavaScript">
<!-- Begin
if (self == top)
{
     var FrameURL = location.search.substring(1);
}
else
    {
     top.location.href = location.href;
    }
// End -->
</script>
<script LANGUAGE="JavaScript">
<!--
var MainFrameURL;
        if (FrameURL == '')
        {
         MainFrameURL = 'haupt.htm';
        }
        else
        {
         MainFrameURL = FrameURL;
        }
document.writeln('<frameset rows="96,*">');
document.writeln('  <frame name="Oben" scrolling="no" noresize target="Oben" src="oben.htm">');
document.writeln('  <frameset cols="262,*">');
document.writeln('    <frame name="Links" target="Hauptframe" src="links.htm">');
document.writeln('    <frame name="Hauptframe" src="' + MainFrameURL + '">');
document.writeln('  </frameset>');
document.writeln('  <noframes>');
document.writeln('  <body>');
document.writeln('<p>Diese Seite verwendet Frames.<br>');
document.writeln('Frames werden von Ihrem Browser leider nicht unterstützt.</p>');
document.writeln('</body></noframes></frameset>');
//-->
</SCRIPT><NOSCRIPT>
</html>

 
Inhalt aller Seiten, die im Frame dargestellt werden sollen:

<html>
<head>
<title>Testseite</title>
<script src="setframe.js"></script>
</head>
<body>
<p><font face="Verdana" size="2"><b>Testseite</b></font></p>
</body>
</html>

  
Inhalt der setframe.js: 
  if(!parent.Hauptframe)
   location.href="index.htm?" + location.pathname;

  
Beachten Sie den Namen des Frames !
In der index.htm und in der setframe.js muss dieser übereinstimmen
(siehe rote Markierung)
Erklärung:

Durch das Einbinden der setframe.js wird überprüft,
ob sich die Seite im Frame namens Hauptframe befindet.
Ist dies nicht der Fall, wird die index.htm mit Hilfe einer Übergabe aufgerufen:
index.htm?testseite.htm

Diese Übergabe wird anschließend in der index.htm ausgewertet
und der entsprechende Frameset zusammengesetzt:
document.writeln('    <frame name="Hauptframe" src="' + MainFrameURL + '">');

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Ich hab das in meinem letzten Projekt halb client-, halb serverseitig gelöst. Oben in den Unterseiten steht jeweils

<script language=JavaScript>
if((top==self) || (top.name!='TopFrame')){
top.location.href='/default.aspx?Link=Hauptseite.aspx';
}
</script>


Und in der default.aspx siehts so aus (Auszug)

<script language="javascript">
window.name="TopFrame";
</script>
<frameset rows="*,78" border=0 frameSpacing=0 frameBorder=0>
<frame name="frmMain" src="Hauptseite.aspx">


Wobei die grünen Werte serverseitig gesetzt werden.

Griessli
Irene

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Ich möchte wirklich betonen, dass Du zu Beginn eines Webprojektes lieber eine framlose Version planen solltest.
Dann musst Du dich z.B. gerade 30 Minuten mit den Befehlen für Server Side Includes beschäftigen und es läuft. Keine Probleme mit Frames, Suchmaschinen werden die Seiten lieben, Besucher haben absolut keine Darstellungsprobleme.

Ich habe mein Hauptprojekt (jetzt > 2000 Seiten) auch mit Frames gestartet. Baue aber kontinuierlich den Anteil an .shtml Seiten aus. Es lohnt sich einfach. Vergiss Frames, vergiss langsame CMS. Check den Provider ab, ob er SSI unterstützt (und wie ?) und dann lass diese Frames weg.

Oder was ist Eure Meinung ?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
QUOTE
Ich habe mein Hauptprojekt (jetzt > 2000 Seiten) auch mit Frames gestartet. Baue aber kontinuierlich den Anteil an .shtml Seiten aus. Es lohnt sich einfach. Vergiss Frames, vergiss langsame CMS. Check den Provider ab, ob er SSI unterstützt (und wie ?) und dann lass diese Frames weg.


Hört sich interessant an. Ich habe nämlich ein ganzes Bündel an Frameseiten. CMS konnte mich bis jetzt noch nicht wirklich vom Sessel hauen. Wo gibt es gute Infos in deutsch über .shtml und SSI? ... und ja Leute, ich kann in Google selber suchen. Aber vielleicht kann mir ja jemand die Mühe ersparen x URLs in Google anzuschauen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
hier kannst du dich einarbeiten:

http://www.netztrainer.de/ssi/ssi.html

hier noch in englisch: http://www.ssi-developer.net/ssi/ssi-include.shtml

grundsätzlich ganz einfach:

code teile in dateien mit der endung .inc abspeichern
die seite wo die teile eingefügt werden sollen müssen die endung .shtml haben

folgende 2 befehle brauchst du um die teile einzufügen:

CODE
<!--#include file="hallo.txt" -->
wenn das file im selben verzeichnis liegt.

und

CODE
<!--#include virtual="/home/includes/copyright.txt" -->

wenn das file in einem subfolder liegt.

so kommst du schon mal sehr weit.

gruess

urs

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Mein Provider schreibt die Endung .shtm vor...

Aber mit den Suchbegriffen SSI und/oder "Server Side Includes" findest Du alles. Sowie Dokumentation des Providers anschauen und nachfragen !

Z.B. kann man den google Adsens-Code in eine Datei auslagern. Probleme mit google: einfach eine Datei ändern, und sozusagen alle 2000 Seiten sind simultan geupdated.

Das Hauptproblem bei SSI ist wirklich, dass man seine Webseite genauer planen muss, aber es ist absolut kein Problem, z.B. eine Tabelle zu definieren und innerhalb der Zellen externen Code einbinden zu lassen. Ein bisschen experimentieren ...

Die Befehle sind so einfach, da lohnt es sich nicht, Frames in Java zu programmieren !

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Hallo Forum,

vielleicht ließt den Thread ja doch noch jemand mit :-)

Ich habe die Frame>>ins Frameset Problematik mit der Anleitung gelöst, die Urs gequotet hat. Alles hatt 100% geklappt.
Mein Problem ist jetzt aber, dass ich die drei Frames/das Frameset auch noch zentriert haben möchte, bzw. haben muss.
Setzte ich das ganze in einen I-Frame, wirft sich das Frameset dort wieder "selbst hinaus" (logisch!).

Weiß jemand ein Lösung, OHNE wieder alles umzubauen?

Grüße
Ralph rolleyes.gif

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
QUOTE

Die Seite reload.htm muss wieder in der Lage sein, die urspüngliche Seite nachzuladen (die URL ist mittlerweile in "dieSeite" gespeichert):

<script language="JavaScript">
    if (top.dieSeite) self.location.href=top.dieSeite;
</script>


Eine Ergänzung:

Wenn die reload.htm verlinkt wurde, und jemand diesem Link folgt, wird sie nicht im frameset geladen. Es fehlt dort eine Umleitung auf die frames.htm:

<script language="JavaScript">
if (top.dieSeite) self.location.href=top.dieSeite;
if (top.frames.length==0) location.replace("http://www.xyz.ch/frames.htm")
</script>

So funktioniert es auch bei der reload.htm rolleyes.gif

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstellen Sie einen Account oder melde Sie sich an um kommentieren zu können

You need to be a member in order to leave a comment

Create an account

Registrieren Sie einen neuen Account in unserer Community. Es ist einfach!


Register a new account

Anmelden

Haben Sie bereits einen Account? Dann melden Sie sich hier an.


Jetzt Anmelden
Anmelden, um zu folgen  
Folger 0