[GastForen Programmierung/Entwicklung JavaScript Kopfzerbrechen wegen Frames...

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Kopfzerbrechen wegen Frames...

Claudia
Beiträge gesamt:

24. Sep 2002, 23:06
Beitrag # 1 von 2
Bewertung:
(739 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Leute
Mir raucht der Kopf, weil ich folgendes versuche: Ich habe eine HP mit 3 Frames: Top, Navigation und Inhalt. Nun zeigt die Suchmaschine natürlich "nur" das Frame an, in welchem die Suche erfolgreich war. Ich weiss, dass es Scripts gibt, die eine Seite in einen Frame "zwingen" können, ebenso, wie es Scripte gibt, welche nicht erlauben, meine Seite in einem fremden Frame darzustellen. Ich habe diesbezüglich verschiedene Varianten, doch nichts, das funktioniert. Bei welchen Seiten muss ich welchen Code hineinschreiben, damit das Frame mit dem Inhalt nicht immer nur die Startseite zeigt? Gibt es eine einfache Lösung? Bin für jeden Tipp dankbar!

Claudia
X

Kopfzerbrechen wegen Frames...

Anonym
Beiträge gesamt: 22827

20. Dez 2002, 15:56
Beitrag # 2 von 2
Beitrag ID: #19964
Bewertung:
(739 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Claudia

hier eine möglichkeit:
das ganze funktioniert wie folgt.
- eine fürs inhalts-frame gedachte seite prüft ob sie im richtigen frameset dargestellt wird.
- wenn nicht, ruft sie das richtige frameset auf und übergibt die adresse zu sich selbst in der url als variable.
- im frameset wird geprüft ob die besagte variable vorhanden ist/übergeben wurde, und wenn ja wird das inhalts-frame entsprechen neu geladen.



<!-- hier der code fuer eine inhaltsseite -->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/...tml4/strict.dtd">

<html><head><title>Inhalts Seite</title>
<script language="JavaScript" type="text/javascript">
<!--
//var frameSetUrl = 'http://www.meinehomepage.ch/frameset.html';
var frameSetUrl = 'frameset.html';
var selfLocation = new String(self.document.location);
var topLocation = new String(top.document.location);
if (topLocation.indexOf(frameSetUrl) == -1) {
//alert('wrong frameset: '+ topLocation);
top.document.location = frameSetUrl +'?page='+ selfLocation;
}
//-->
</script>
</head><body>ich bin die inhaltsseite</body></html>





<!-- hier der code fuer das frameset -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/...l4/frameset.dtd">

<html><head><title>Frameset</title>
<script language="JavaScript" type="text/javascript">
<!--
//--------------------------------------------------
// initialization

// wenn geladen rufe funktion initialize auf
onload = initialize;

function initialize() {
// extrahiere die in der url übergebene variable 'page'
var query = location.search.substring(1);
var args = getArgs(query);
var contentLocation = new String(window.frames['contentFrame'].document.location);

// wenn variable 'page' vorhanden ist
if (typeof args.page != 'undefined') {
// und die url auf welche 'page' zeigt noch nicht geladen ist
if (contentLocation != args.page) {
// dann lade die seite ins inhalts-frame
// (ich habe hier location.replace() verwendet damits keinen eintrag in der Hystory gibt)
window.frames['contentFrame'].document.location.replace(args.page);
}
}
}
//--------------------------------------------------



//--------------------------------------------------
// function getArgs
//--------------------------------------------------
// extracts variables out of location string
// and returns them as a objects properties
//--------------------------------------------------
function getArgs(str) {
var args = new Object();
var pairs = str.split(",");
for (var i=0; i<pairs.length; i++) {
var pos = pairs.indexOf("=");
if (pos == -1) continue;
var argname = pairs.substring(0,pos);
var value = pairs.substring(pos+1);
args[argname] = unescape(value);
}
return args;
}
//--------------------------------------------------
//-->
</script>
</head>

<frameset rows="30%,70%">
<frame src="about:blank" name="topFrame" />
<frameset cols="20%,80%">
<frame src="about:blank" name="navFrame" />
<frame src="seite.html" name="contentFrame" />
</frameset>
</frameset>
<noframes><body>Your browser does not support FRAMES.</body></noframes></html>




alternativ könnte man das frameset mit document.write dynamisch erzeugen was einen overhead bei obigem beispiel elimieren würde.
aber so ist es suchmaschienen freundlicher.

hope this helps

gruss
Steven


als Antwort auf: [#12109]