Autor Zpráva
Sylar
Profil
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
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
_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
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
_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
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
_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
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.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0