frameset erzwingen - kein fremdframe
Wolfgang See
- javascript
0 Patrick0 Günter Laudenklos0 LanX
Hallo,
ich habe im web schon viel zum Thema JavaScript recherchiert:
Es gibt viele einfache Lösungen um das Erscheinen
einer Seite (ohne framset) in einem fremden Frameset zu verhindern.
Ebenso gibt es viele einfache Lösungen um ein Frameset
zu erzwingen (Suchmaschinenproblemn)
Aber:
Ich will beides.
Ich moechte schließlich auch nicht, dass eine Seite meines Framesets
in einem Fremd-Frameset erscheint.
Dazu muß ich das möglicherweise fremde Frameset abfragen.
Und das scheint nicht zu gehen (error).
Wie mache ich das?
oder besser:
Wo finde ich ein schon fertiges Script dafür?
Das ist doch kein neues Problem.
Idealerweise sollte dann auch mein Frameset mit der
richtigen Seite angezeigt werden.
Dazu habe ich nur einen toten link im Archiv dieses Forums gefunden.
Vielen Dank im voraus für Eure Hilfe
Gruß
Wolfgang
Hallo Wolfgang!
Fuer die Befreiung von fremden Frames kannst Du auf meine Loesung auf Atomic Eggs zurueckgreifen:
if (self.name == 'pajst')
{ ;}
else { if (self != top)
top.location.href = self.location;}
Also: wenn der Name des Framefensters "pajst" heisst passiert nichts, ansonsten wird die Seite standalone geladen. Hier (im else-Zweig) kannst Du Dein Frameset laden lassen.
Warum so komische Framename (pajst)??? Ganz einfach: die Meisten nennen Ihre Framesfenster doch "haupt" oder "main" oder so in der Art. Wenn ich selbst mein Framefenster so nenne, kann es passieren, dass eben nichts passiert, falls die Seite in einem fremdes Fenster gleichen Namens angezeigt wird ;-)
Patrick
Hallo Patrick
if (self.name == 'pajst')
{ ;}
else { if (self != top)
top.location.href = self.location;}
warum nicht gleich
if (self.name != 'pajst')
{ if (self != top)
top.location.href = self.location;}
?
grüße
axel
Hallo Axel!
warum nicht gleich
if (self.name != 'pajst')
{ if (self != top)
top.location.href = self.location;}
Auch gut!
Das haettest Du mir vor 2 Jahren sagen sollen, als ich am Grundgeruest der Site baute... ;-)
Bis dann
Patrick
Hallo Wolfgang,
Ich will beides.
Ich moechte schließlich auch nicht, dass eine Seite meines Framesets
in einem Fremd-Frameset erscheint.
Dazu muß ich das möglicherweise fremde Frameset abfragen.
Und das scheint nicht zu gehen (error).
Wie mache ich das?
oder besser:
Wo finde ich ein schon fertiges Script dafür?
Das ist doch kein neues Problem.
was ganz fertiges schreib ich Dir nicht, aber ...
ich empfehle Dir folgendes Vorgehen:
benenne Dein (top)framesetfebster mit einem eigenen (ungewöhnlichen) Namen,
z.Bsp in frameset-def per javascript im <head>Teil mit self.name = 'mein-topname'
dann frägst Du in Deinen relevanten Unterseiten per js:
if(top.name!='mein-topname' || top.frames.length != anzahl-meiner-frames)
top.location.href = "http://www.meine.seite.de?window.location.href
Idealerweise sollte dann auch mein Frameset mit der
richtigen Seite angezeigt werden.
... dazu sollte Dir anschliessend dieser Link weiterhelfen:
http://www.teamone.de/selfaktuell/artikel/javascript/dyn-frames/index.htm
das bietet zwar keine 100% Sicherheit, genügt jedoch in den meisten Fällen!
Viele Grüße Günter
Hallo Günter, hallo Ihr anderen Helfer,
mit dem von Dir Günter empfohlenen Script:
http://www.teamone.de/selfaktuell/artikel/javascript/dyn-frames/index.htm
(ich hatte zuerst darauf einen toten link)
und dem einfachen
Anwendungsbeispiel in SELFHTML:
http://www.teamone.de/selfhtml/tedb.htm
(ins Frameset eingebaut)
hab ich nun alles so, wie ich es wollte.
--- Und es funktioniert ---
Das muß nicht 100%ig sicher sein, aber so sind für mich
die Hauptprobleme dieser Art gelöst.
Nochmals Vielen Dank an alle
(Ich hab mit alle antworten gesichert und werde sie
mir noch einmal unter's Kopfkissen legen)
und
Gruß
Wolfgang
Hallo Wolfgang
Ich verstehe dich so dass du ne fälschungssichere
Möglichkeit suchst um zu wissen dass das Frameset
von deinem Host kommt! window.name ist leider nicht sicher!
Dazu muß ich das möglicherweise fremde Frameset abfragen.
Und das scheint nicht zu gehen (error).
Der Fehler tritt nur auf wenns von einem fremden Host kommt,
sprich dein Frame wird gerippt. Und genau diesen
Nachteil köntest du zu deinem Vorteil nutzen:
Ansatz 1. Unter IE kannste Fehler mit try/catch abfangen.
Ansatz 2. Mit (ungetestet)
timeout=window.setTimeout("top.location.href=MeinFrameSet",1000)
könntest du erzwingen, dass dein Frameset in einer Sekunde geladen wird
Wenn deine Abfrage von Top erfolgreich ist kannste mit
window.clearTimeout(timeout)
die unnötige Umleitung wieder canceln.
Leider weiß ich nicht ob im Errorfall auch die Timeouts gecancelt
werden, falls ja mußt du Abfrage und setTimeout auf verschiedenen
Frames legen.
Hoffe das klappt so
Viele Grüße
Rolf