Fenster Verweise
Lars
- javascript
Hallo! Nach langer Suche im Netz, hoffe ich, dass mir hier jemand helfen kann.
Ich habe eine Sitemap, die als Fenster über der Seite liegt. Damit die Links im ursprünglichen Fenster geöffnet werden, habe ich folgende funktion verwendet:
function load(file)
{if (opener){
top.opener.location.href = file;
}else{
window.location.href = file;} }
Falls die Sitemap direkt aufgerufen wird, soll der Link im gleichen Fenster geöffnet werden (deshalb der else-Zweig). Nun habe ich das Problem, dass wenn von einer anderen Seite auf die Sitemap gelinkt wird, meine Links in deren Fenster geöffnet werden. Ich würde deshalb gern zusätzlich prüfen, ob die Sitemap von meinem Host geöffnet wurde. Wie geht das?
Vielen Dank vorab!
L.
Hallo Lars,
function load(file)
{[...]}
und was machte einer, der kein js hat?
Falls die Sitemap direkt aufgerufen wird, soll der Link im gleichen Fenster geöffnet werden (deshalb der else-Zweig). Nun habe ich das Problem, dass wenn von einer anderen Seite auf die Sitemap gelinkt wird, meine Links in deren Fenster geöffnet werden.
mhh... Wie wird denn auf deine Sitemap (auf die ich sowieso nie verlinken würde) verlinkt? Wenn sie mit target="_blank" aufgerufen wir, ist doch das Ursprungsfenster im Sinne von Javascript nicht der 'opener', oder? Wenn deine Seite im gleichen Fenster geöffnet wird, ist es doch nur logisch, wenn die Links in der Seite, von der aus auch verlinkt wurde, geöffnet werden.
Ich würde deshalb gern zusätzlich prüfen, ob die Sitemap von meinem Host geöffnet wurde.
Dazu musst du den Referrer[1] auswerten - allerdings wird das nicht immer zum Erfolg führen, das der Referrer leicht fälschen lässt oder garnicht vorhanden ist (mein Opera liefert z.B. überhaupt keinen Referrer).
Grüße aus Nürnberg
Tobias [der hofft, dass die Sätze jetzt nicht allzu wirr waren :-)]
[1] http://selfhtml.teamone.de/javascript/objekte/document.htm#referrer
Hallo Tobias,
vielen Dank für die Hinweise, ich hab noch ein paar anschließende Fragen:
mhh... Wie wird denn auf deine Sitemap (auf die ich sowieso nie verlinken würde) verlinkt?
Das Problem liegt eigentlich noch anders, habe es nur gestern Nacht so formulieren wollen, dass überhaupt jemand damit was anfangen kann. Es eigentlich darum, dass Menüs per php-include sowohl in die Hauptseite, als auch in die Sitemap eingebunden werden. Das JS muss also in beiden fällen funktionieren. In der Hauptseite den Link im gleichen Fenster öffnen, in der Sitemap Link im opener...
Am besten mal ansehen:
http://www.diemaulhelden.de/home/
(ist der Relaunch-Entwurf, noch nicht alles funktioniert....)
Wenn sie mit target="_blank" aufgerufen wir, ist doch das Ursprungsfenster im Sinne von Javascript nicht der 'opener', oder?
Doch, ich habe es getestet, zumindest der IE interpretiert einen solchen Aufruf als opener...
Ich würde deshalb gern zusätzlich prüfen, ob die Sitemap von meinem Host geöffnet wurde.
Dazu musst du den Referrer[1] auswerten - allerdings wird das nicht immer zum Erfolg führen, das der Referrer leicht fälschen lässt oder garnicht vorhanden ist (mein Opera liefert z.B. überhaupt keinen Referrer).
Ich habe jetzt eine andere Lösung gefunden:
function load(file)
{if (opener && opener.location.host == "www.diemaulhelden.de"){
top.opener.location.href = file;
}else{
window.location.href = file;} }
Das funktioniert nach meinen Tests. Sind damit irgendwelche Probleme zu erwarten? (Stichwort Crossbrowser usw.)
Grüße aus Nürnberg
Tobias [der hofft, dass die Sätze jetzt nicht allzu wirr waren :-)]
Nein, vielen Dank nochmal!
Hallo Lars,
Es eigentlich darum, dass Menüs per php-include sowohl in die Hauptseite, als auch in die Sitemap eingebunden werden. Das JS muss also in beiden fällen funktionieren. In der Hauptseite den Link im gleichen Fenster öffnen, in der Sitemap Link im opener...
mhh... und wenn du beim in der Datei die Includet (<-blödes Wort :-)) wird eine Variable überprüfst, und danach jeweils das onclick ausgibst (Sitemap) oder eben nicht (normale Seite)?
Am besten mal ansehen:
http://www.diemaulhelden.de/home/
-> </faq/#Q-19> (den Link kenn ich inzwischen auswendig :-))
Wenn sie mit target="_blank" aufgerufen wir, ist doch das Ursprungsfenster im Sinne von Javascript nicht der 'opener', oder?
Doch, ich habe es getestet, zumindest der IE interpretiert einen solchen Aufruf als opener...
ob es der IE macht ist irrelevant :-) mit Opera/Mozilla sollte es auch gehen.
function load(file)
{if (opener && opener.location.host == "www.diemaulhelden.de"){
schließt 'operner.location...' das 'opener' alleine nicht mit ein?
top.opener.location.href = file;
}else{
window.location.href = file;} }
eine abenteuerliche Klammersetztung hast du ja :-)
Das funktioniert nach meinen Tests. Sind damit irgendwelche Probleme zu erwarten? (Stichwort Crossbrowser usw.)
mit welchen Browern hast du das getestet?
das der Link 'Fenster schließen' unter der Sitemap nicht funktioniert, weiß du? Ansonsten funktioniert das ganze anscheinen so wie es soll (opera7b2+mozilla1.1), nur im Opera landet die Sitemap zu 2/3 außerhalb meines Fensters ->wirf das moveTo() raus.
Grüße aus Nürnberg
Tobias
Hallo Tobias,
vielen Dank! Es scheint also zu funktionieren... Alle Hinweise sind berechtigt. Javascript ist einfach nicht meine Baustelle, ich reime mir das alles nur zusammen. Ich lasse das jetzt erstmal so, weil ich die Seite noch im alten Jahr online bringen will. Sicher gibt es noch elegantere Lösungen. Nur um das "Fenster schliessen" muss ich mich noch kümmern - Ursache ist das base target-tag, was ein neues Fenster erzwingt...
Vielen Dank von Berlin nach Nürnberg, hab das Forum zum ersten Mal benutzt - aber es scheint sich zu lohnen.
Viele Grüße
Lars