opener Befehle verknüpfen ?!?
Christian
- javascript
Hallo *,
ich habe folgendes Problem:
Ich habe ein Hauptfenster, in dem eine Art DIA-Show abläuft, die durch einen Stop-Button unterbrochen werden kann. Diese DIA-Show habe ich folgendermassen realisiert:
<script language="JavaScript">
function refresh()
{location.href = "../NextPage.html";}
function Pause()
{window.clearTimeout(aktiv);}
aktiv = window.setTimeout("refresh()",8000);
</script>
Alle 8 Sekunden wird die nächste Seite geladen. Durch den KLick auf den Stop-Button wird die Funktion Pause() aktiviert, die den Prozess stopt.
Von diesem Hauptfenster aus kann man ein neues Fenster öffnen. Von diesem neuen Fenster aus möchte ich jetzt das Hauptfenster steuern. Ich habe in diesem neuen Fenster eine Liste von Links. Beim Klick auf einen dieser Links wird an das Hauptfenster eine neue URL übergeben (sozusagen die nächste Seite). Dasa Script sieht dazu wie folgt aus:
</script>
<script language="Javascript">
function weiter(ziel)
{
opener.location.href = ziel;
opener.Pause();
if(self.close)
{
self.focus();
}
else {}
}
//-->
</script>
Das öffnen dieser URL klappt auch. Ich möchte aber auch noch die Funktion Pause() im Hauptfenster aufrufen, um die DIA-Show abzubrechen. [opener.Pause()]. Das funktioniert aber nicht. Wenn ich den ersten Befehl [opener.location.href = ziel;] rausnehme, wird zwar keine neue URL übergeben, aber die Funktion Pause() wird anscheinend ausgeführt, jedenfalls läuft die Show nicht weiter. Ich nehme also an, dass lediglich der gemeinsame Aufrufe beider Funktionen [location und Pause] nicht funktioniert.
Was kann ich tun?
Kann man die irgendwie koppeln oder vereinen?
Über Hilfe wäre ich sehr dankbar!
Gruss,
Christian
Hi Christian,
Das öffnen dieser URL klappt auch. Ich möchte aber auch noch die Funktion Pause() im Hauptfenster aufrufen, um die DIA-Show abzubrechen. [opener.Pause()]. Das funktioniert aber nicht. Wenn ich den ersten Befehl [opener.location.href = ziel;] rausnehme, wird zwar keine neue URL übergeben, aber die Funktion Pause() wird anscheinend ausgeführt, jedenfalls läuft die Show nicht weiter. Ich nehme also an, dass lediglich der gemeinsame Aufrufe beider Funktionen [location und Pause] nicht funktioniert.
Erklärung des Phänomens: Das opener-Objekt bezieht sich AFAIK auf das Dokument, aus dem heraus das Popup geöffnet wurde, nicht auf die Fensterinstanz. Wenn Du im Hauptfenster location.href auf den opener anwendest, ist das öffnende Dokument ja anschließend nicht mehr da - der opener kann dann nicht mehr angesprochen werden.
Was kann ich tun?
Kann man die irgendwie koppeln oder vereinen?
Mir fällt nur ein: übergib dem Hauptfenster einen Querystring, der dann von dem neu geladenen Dokument gelesen wird - das abhängig davon dann pause() aufrufen kann.
HTH,
Utz
Hallo Utz,
okay, warum das nicht mehr klappt, verstehe ich.
Ich habe allerdings nicht die geringste Idee, wie ich das mit dem Querystring machen soll.
Kannst du mir da vielleicht einen detaillierten Tipp oder einen Link geben, wo ich das explizit nachlesen kann?
Vielen Dank schon mal,
Christian
Hi Christian,
ungetestet:
im Pop-Up:
opener.location.href="datei.htm?pause"
und in datei.htm dann an geeigneter Stelle:
if (window.location.search == "pause") pause();
wobei pause() natürlich auch in Datei.htm stehen muss. Näheres zu Querystrings übrigens unter http://selfhtml.teamone.de/javascript/objekte/location.htm#search
Grüße,
Utz
Hallo Utz,
werde das mal ausgiebig testen!
Vielen Dank und Gruss,
Christian