• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Refresh im gleichen Fenster ohne Frameset (parent)

hablamasch

Neues Mitglied
Ich habe eine Website mit einem Frameset (links oben Logo, oben und links Menü, Rest Ausgabeframe). Eine Satei wurde dahingehend geändert, dass viele Einträge (erreichbar über #) woandershin verschoben wurden. Jetzt gibt es viele Zugriffe auf die Datei, die eben nach den Ankern suchen. Diese möchte ich jetzt per Javascript umleiten bzw. die neue Datei aufrufen. Die hat aber nun keine Framesets mehr. Es funktioniert nun soweit, das die Datei aufgerufen wird, aber leider im Ausgabeframe. Realisiert wirds letztendlich mit <meta http-equiv="refresh"...>, nur leider kann ich da kein target="_parent" unterbringen. Ich habe alles mögliche mit Javascript probiert, aber es klappt alles nicht. Bin für jede Idee dankbar.
 
Werbung:
Ich denke es wäre einfacher auf Framesets zu verzichten. Diese Erfindung aus dem letzten Jahrtausend nutzt niemand mehr. Unabhängig davon könntest Du aber schauen, ob noch irgendwo ein Script unter "javascript frame nachladen" zu finden ist.
 
Ich will das Frameset ja nicht nachladen, sondern auflösen. Die Datei soll ohne Frameset im gleichen Fenster erscheinen. Ich bin ja gerade dabei, mich von dem Frameset zu lösen. Zur Zeit existiert beides parallel, weil die Site sehr umfangreich ist.
 
Werbung:
Da gilt eigentlich das gleiche. Da Du schon etwas versucht hast ist es schwer zu sagen was du falsch gemacht hast. Ein Link zur Seite könnte hilfreich sein.
 
Okay, dann etwas konkreter. Es geht um die Datei http://www.eckhart.de/index.htm?tzeugen.htm (ohne das 'index.htm' erscheint eine Abfrage). Darin waren vor kurzem über 400 Anker, die halt noch im Netz kursieren. Die haben jetzt eine neue Adresse. Also z.B. http://www.eckhart.de/index.htm?tzeugen.htm#Bo ist jetzt: http://www.eckhart.de/Textzeugen/bonn.htm#Bo.
Bis dahin habe ich das so gelöst:
// javascript-Datei:
var url = window.location.href;
var anker = window.location.hash;
if (url.match(/#/) == "#") {
var hs = url.split("#");
var vor = hs[0].slice(0,hs[0].length-11);
var datei = ort[sig.indexOf(hs[1])]; //bezieht sich auf vorherige Arrays
document.write('<meta http-equiv="refresh" content="0; URL='+vor+'/Textzeugen/'+datei+'.htm'+anker+'">');
}
Das funktioniert zwar grundsätzlich, aber ich kann hier kein PARENT unterbringen wie bei <a href="..." target="_parent">, weil es ja eine direkte Weiterleitung sein soll, kein anklickbares Element - weshalb es innerhalb des vorhandenen Framesets erscheint.
Wenn sich das ohne <meta ...> machen ließe, wäre es wohl kein Problem.
 
Bau es doch in eine SinglePage App um. Dabei hast du nur eine einzige Seite, in die sämtliche Inhalte per AJAX geladen werden. Quasi die moderne Variante von Framesets. Per mod_rewrite die URLs umschreiben. Aus htttp://example.de/unterseite.htm/#foo wird http://example.de/unterseite/#/foo. Der Inhalt von Foo lässt sich als Objekt übergeben, oder auch in einer separaten HTML-Datei speichern. Gehe mal durch dieses Tutorial bis Kapitel 7, dann siehst du, wie sich die Seiten per $routeParams inludieren lassen.
https://angularjs.org
 
Werbung:
Werbung:
Okay, falls es jemanden interessiert - die Lösung ist einfach. Statt
document.write('<meta http-equiv="refresh" content="0; URL='+vor+'/Textzeugen/'+datei+'.htm'+anker+'">');
wird die Stringfolge von URL= in eine Variable geschrieben:
var neu = vor+'/Textzeugen/'+datei+'.htm'+anker;
und über location.assign() neu geladen:
parent.location.assign(neu);
Durch 'parent' wird das vorhandene frameset ersetzt.
 
Zurück
Oben