Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » Auszeichnungssprachen » Klickevent in Kindfenster Antworten
Klickevent in Kindfenster

dieguito
Pixelschubser


Beiträge: 1


ich öffne ein neues Fenster.

temp=window.open(...);

ich möchte, das ein Klickevent im KindBody eine Function im Parent auslöst

temp.body.onclick oder so irgendwas

Der Inhalt der KindSeite ist dynamisch und kann nicht beeinflusst werden. Der Eventhandler muss also im Parent aktiv sein...

Habt Ihr da irgendwelche Ideen ?


  Profil   E-Mail   Website   Editieren   Zitieren

Ori
Fachidiot


Beiträge: 116


Was heißt, der Inhalt sei dynamisch und könne nicht beeinflusst werden?
Dank DOM alles geändert werden...

Das müsste zumindest im NC und Derivaten klappen:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8:
var temp = window.open(...);
temp.captureEvents(Event.CLICK);
temp.onclick = geklickt;

function geklickt(ereignis) // event-Objekt wird übergeben
{
 //...
}


Das MSDN hält folgende Möglichkeit für den IE bereit:
1: 
2: 
3: 
4: 
5: 
6:
temp.attachEvent('onclick', geklickt2); // true wenn erfolgreich

function geklickt2 () // keine Parameter
{
 // ...
}


Du solltest vorher die Methoden auf Vorhandensein überprüfen. Evtl gelten die Ereignisse im IE nicht für temp sondern für temp.document. Dann musst Du auch das Ereignis unload behandeln, damit der EventHandler nicht verloren geht, sondern immer wieder neu referenziert wird.

Mehr bei SelfHTML und MSDN .

Diese Nachricht wurde geändert von: Ori
  Profil   E-Mail   Website   Editieren   Zitieren

sondermuelli
Quasselstrippe


Beiträge: 369


Ori schrieb am 22.01.2005 16:23
Das müsste zumindest im NC und Derivaten klappen:
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8:
var temp = window.open(...);
temp.captureEvents(Event.CLICK);
temp.onclick = geklickt;

function geklickt(ereignis) // event-Objekt wird übergeben
{
 //...
}


Das MSDN hält folgende Möglichkeit für den IE bereit:
1: 
2: 
3: 
4: 
5: 
6:
temp.attachEvent('onclick', geklickt2); // true wenn erfolgreich

function geklickt2 () // keine Parameter
{
 // ...
}


Zwei Funktionen sind doch gar nicht nötig und captureEvents() halte ich für überflüssig, das das sowieso nur der Netscape 4 benötigt.
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14:
function oeffne() {
    temp = window.open(...);
    window.setTimeout('ereignis()', 20); 
     // setTimeout damit das Fenster auch wirklich zur Verfügung steht
}

function ereignis() {
    temp.document.onclick = function(e) {
        var e = e ? e : window.event;  // Damit auch der IE zu seiner event-Variablen kommt
        //ab hier dann die gewünschten Funktionen
    }
}


---
wer hilft mir beim geschirr spülen?

  Profil   E-Mail   Website   Editieren   Zitieren
 

Antworten
Nach oben