Autor | Zpráva | ||
---|---|---|---|
Sylar Profil |
#1 · Zasláno: 4. 6. 2011, 00:38:44
Zdravím,
po kliknutí na ikonu vyhodím uživateli image manager pomocí window.open(cesta, atd.). Po tomto příkazu následuje funkce editoru editor.insertHtml(cesta-k-obrazku.jpg);. potřeboval bych aby se funkce insertHtml() provedla až v době, kdy bude vybrán obrázek z pop-up okna. nyní to proběhne ihned za sebou a obrázek se logicky nestačí vybrat. PŘESNĚ to co potřebuji dělá showModalDialog() ale tato fce běhá pouze v "půlce" prohlížečích, proto není použitelná. |
||
_es Profil |
#2 · Zasláno: 4. 6. 2011, 01:23:55
Sylar:
„potřeboval bych aby se funkce insertHtml() provedla až v době, kdy bude vybrán obrázek z pop-up okna.“ Neviem, čo presne znamená, že obrázok „bude vybraný“, no vieš to snáď zistiť pomocou udalostí v tom novom okne a potom zavolať funkciu v prvom okne zo skriptu druhého okna. Alebo môžeš ovládačom udalostí druhého okna aj priradiť funkcie prvého okna. |
||
Sylar Profil |
#3 · Zasláno: 4. 6. 2011, 13:20:23
_es:
ono je to právě trošku složitější, protože funkce insertHtml() je vnitřní funkce hotové aplikace wysiwyg editoru, ten se inicializuje v prvním okně a když ji chci použít ve druhém, napíše mi to, že tuto funkci nezná i když použiju referenční proměnnou, do které jsem editor v prvním okně inicializoval. |
||
_es Profil |
#4 · Zasláno: 4. 6. 2011, 13:43:39 · Upravil/a: _es
Sylar:
V druhom okne sa môžeš odkázať na prvé cez vlastnosť window.opener .
Alebo druhý spôsob: Nejako funkciu insertHtml v prvom okne predsa volať musíš.
Tak priradíš z prvého okna funkciu definovanú v prvom okne a nejako volajúcu funkciu insertHtml k udalosti druhého okna.
Čomu konkrétne z tých dvoch možných spôsobov nerozumieš? |
||
Sylar Profil |
#5 · Zasláno: 4. 6. 2011, 14:43:15 · Upravil/a: Sylar
_es:
chápu obě dvě možnosti a vím přesně jak je udělat, ale říkám, že v prvním okně je ta funkce "insertHtml()" součástí nějaké třídy, a volá se přes this, které já nemohu dostat do toho druhého okna. v prvním okně se tato funkce volá this.rte.selection.insertHtml(html, false); a když ji takto zavolám z druhého okna window.opener.rte.selection.insertHtml(html, false); napíše mi to rte is undefined. |
||
_es Profil |
#6 · Zasláno: 4. 6. 2011, 15:28:47 · Upravil/a: _es
var w = window.open(argumenty); w.f = function(){this.rte.selection.insertHtml(html, false);}; A už ti zostáva len zo skriptu v druhom okne zavolať, pri správnej udalosti, funkciu f . Je to funkcia druhého okna, no pracujúca s premennými prvého okna.
|
||
Sylar Profil |
#7 · Zasláno: 4. 6. 2011, 16:33:57
_es:
var w = window.open(argumenty); w.f = function(){ rte.selection.insertHtml(html, false); } tohle fugnuje, zaplať pánbůh :-) velmi děkuji |
||
_es Profil |
#8 · Zasláno: 4. 6. 2011, 17:12:12 · Upravil/a: _es
Sylar:
Aha, zabudol som, že this tam nepatrí, respektíve, ak by bolo treba preniesť objekt v this do iného okna, treba to spraviť cez novú premennú: var that=this; a použiť that namiesto this .
|
||
Časová prodleva: 13 let
|
0