Autor Zpráva
abc
Profil
Dobrý večer,

nenapadá Vás prosím někoho, jak obejít tuto chybu(?) Opery?
Otevřu si popup okno:
<a href="" class="" title="" onclick="window.open('popup.php','','width=800,height=600,left=0,top=0,resizable=1,scrollbars=1'); return false;">popup</a>

A v popup oknu chci zavolat nějakou funkci definovanou v hlavním okně a popup zavřít:
<script type="text/javascript">
    opener.testAlert('aaa');
    window.close();
</script>

Ovšem stane se to, že se popup okno v Opeře nezavře a musím ho zavírat ručně. V jiných prohlížečích je to ok.
Takže nevíte prosím náhodou někdo, jak to vymyslet, aby to fungovalo i v Opeře?

testAlert je samozřejmě definovaná v okně hlavním:
function testAlert(str) {
  alert(str);
}
_es
Profil
abc:
Vyskúšaj funkciu testAlert definovať nejako inak, lebo metóda alert na inom okne môže znamenať aj fokus do toho okna.. Alebo, prečo nevoláš funkciu, definovanú v otváranom okne?
abc
Profil
_es:
Vyzkoušeno, máš pravdu, když tam není alert, tak se okno normálně zavře.
Je to z toho důvodu, že celá aplikace běží v iframu, ale potřebuji tam implementovat platební bránu, která se do iframu nevejde (iframe zvětšit nelze), tak otevřu popup, platební brána se vyřídí, vrátí nějaký result a ten si potřebuju dostat zpátky do iframu a podle toho se nějak dál zachovat.
Myslím, že toto je vhodné řešení, nebo tě napadá nějaké elegantnější řešení?
_es
Profil
abc:
Môžeš na „medzioknovú“ komunikáciu použiť aj len globálne premenné/vlastnosti iného okna. Netreba používať metódy s efektmi, pre ktoré sú v niektorých prehliadačoch zakázané či obmedzené.
abc
Profil
_es:
Problém ale je, že hlavní okno přeci nebude vědět, kdy už v popup okně potřebná data jsou?
_es
Profil
abc:
kdy už v popup okně potřebná data jsou
A tie„potrebné dáta“ tam sú kedy? Keď je ukončené načítanie toho „popup okna“, alebo kedy?
Ak je schopné tú udalosť zachytiť to poup okno, tak to môže „zachytiť“ aj iné okno.
abc
Profil
_es:
Ta platební brána právě funguje tak, že se celá stránka přesměruje na platební bránu a ta potom vrátí výsledek na nastavenou stránku.
Tzn.
1) otevřu popup
2) přesměruju na bránu
3) uživatel libovolně dlouho vyplňuje údaje o platební kartě apod.
4) probíhá platba
5) brána přesměruje zpátky na nějakou stránku
6) v popup okně se spustí skript, který vyhodnotí, že se má předat result z brány, a že se má zavřít a zbytek ošetří hlavní okno
_es
Profil
abc:
v popup okně se spustí skript, který vyhodnotí, že se má předat result z brány, a že se má zavřít a zbytek ošetří hlavní okno
No a prečo sa to „popup okno“ nezavrie samé?
abc
Profil
No a prečo sa to ‚popup okno‘ nezavrie samé?
Omlouvám se, ale nerozumím.
Popup okno předá nějaké funkci v okně hlavním result z brány a následně se zavře. A potom už se dál vše zpracovává v okně hlavním.
_es
Profil
abc:
A problém je teda vyriešený?

hlavní okno přeci nebude vědět, kdy už v popup okně...
„Hlavné“ okno môže rovnako „vedieť“, čo sa deje v tom „popup okne“ ako samotné „popup okno“ a opačne.
abc
Profil
A problém je teda vyriešený?
Jasně, díky, už díky radě ve [#2]

‚Hlavné‘ okno môže rovnako ‚vedieť‘, čo sa deje v tom ‚popup okne‘ ako samotné ‚popup okno‘ a opačne.
Teď už to bude trochu mimo off-topic, ale jak to máš na mysli?
_es
Profil
abc:
...jak to máš na mysli?
Že môže byť trebárs všetok JS kód len v „hlavnom“ okne, aj ten, ktorý bude potom „obsluhovať“ to vyskakovacie.
Ak ten alert treba, tak by možno stačilo volať funkciu alert nad vyskakovacím oknom, nie nad „hlavným“.

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:

Prosím používejte diakritiku a interpunkci.

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

0