JS-scope
cheops
- javascript
hallo zusammen,
ich habe ein popup (lightbox) aus dem ich heraus eine methode vom opener aufrufen möchte, die in einem include-file steckt. ergo habe ich folgendes versucht: "opener.refreshComments()"
die methode wird auch ausgeführt, aber nicht so wie gewünscht :-(
der scope scheint immer noch im fenster zu liegen und wird somit in meiner lightbox ausgeführt... er muss aber im opener sein... wie kann ich den call dazu veranlassen, im opener ausgeführt zu werden??
danke und gruß
marcus
Hallo marcus
ich habe ein popup (lightbox) aus dem ich heraus eine methode vom opener aufrufen möchte, die in einem include-file steckt. ergo habe ich folgendes versucht: "opener.refreshComments()"
Wenn du wirklich Lightbox JS meinst, dann kann das nicht funktionieren, weil das kein PopUp (neues Fenster) ist, sondern ein Element in der bestehenden Seite einblendet, welches den Rest überlagert.
Es gibt also keinen opener. Dein Script müsste also statt irgendwie zu funktionieren Fehlermeldungen schmeißen.
Auf Wiederlesen
Detlef
hallo detlef,
ich verwende die jquery thickbox, die macht irgendwie ein iframe auf, jedenfalls ist es definitiv kein übergeblendetes div.
ich kann mittels "self.parent.refreshComments()" meine methode ja aufrufen aber sie scheint sich irgendwie auf einen anderen scope zu beziehen... das ist mein einziges problem...
gruß
marcus
Hallo cheops
ich verwende die jquery thickbox, die macht irgendwie ein iframe auf, jedenfalls ist es definitiv kein übergeblendetes div.
Dann werde ich dir wahrscheinlich nicht wirklich helfen können, weil ich mich noch nie mit jquery beschäftigt habe.
ich kann mittels "self.parent.refreshComments()" meine methode ja aufrufen
Damit sprichst du das Dokument an, welches das IFrame enthält.
Was macht refreshComments() genau?
Auf Wiederlesen
Detlef
ich verwende die jquery thickbox, die macht irgendwie ein iframe auf, jedenfalls ist es definitiv kein übergeblendetes div.
So definitiv ist es sicher nicht, im Quellcode steht zumindest etwas anderes (wenn ich ihn richtig lese):
if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
....
if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
$("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
$("#TB_overlay").click(tb_remove);
}
}else{//all others
if(document.getElementById("TB_overlay") === null){
$("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
$("#TB_overlay").click(tb_remove);
}
}
~~~nur der IE 6 bekommt ein iframe.
> ich kann mittels "self.parent.refreshComments()" meine methode ja aufrufen aber sie scheint sich irgendwie auf einen anderen scope zu beziehen... das ist mein einziges problem...
Da kommt es drauf an, was du unter Scope verstehst. Wenn es dir um's Fenster geht sollte window oder this, alle Elemente ansprechen. Ich vermute du meinst aber etwas anderes, nur wir Wissen nicht was.
Struppi.
Hi,
ich verwende die jquery thickbox, die macht irgendwie ein iframe auf, jedenfalls ist es definitiv kein übergeblendetes div.
nicht raten, ermitteln. Firebug hilft.
Cheatah