Autor Zpráva
_es
Profil
Vo všetkých prehliadačoch, čo som skúšal, okrem IE, funguje to, že ak sa rovnaký objekt nachádza vo viacerých oknách a hociktoré okno sa zavrie, tak objekt existuje ďalej.
V IE8 je však tento objekt pri zavretí okna, v ktorom bol objekt definovaný, zrušený a pri pokuse o prístup k tomu objektu nastane chyba.
Zaujímavé je, že ten objekt v IE8 existuje ďalej, ak sa vykoná znovunačítanie stránky, alebo sa do toho okna načíta úplne iná stránka.
Objekt je vytvorený v x.html a v y.html je priradený do globálnej premennej, y.html je možné otvoriť hocikoľko krát.
x.html (odkaz):
<!DOCTYPE HTML>
<script>
var o = new Object;
o.x = 0;
</script>
<a href=y.html target=_blank>y.html</a>

y.html:
<!DOCTYPE HTML>
<BUTTON id=b>Zobraz o.x</BUTTON>
<BUTTON id=p>o.x++</BUTTON>
<script>
var o = opener.o;
document.getElementById("b").onclick = function(){alert(o.x);};
document.getElementById("p").onclick = function(){o.x++;};
</script>

Nevie niekto o spôsobe definovania nejakého objektu, ktorý by zostal existovať aj po zavretí okna v ktorom bol definovaný?
Skúšal som všetko možné, no nepodarilo sa mi to, aby sa IE8 v tomto správal rovnako ako iné prehliadače.
Chamurappi
Profil
Reaguji na _es:
Skúšal som všetko možné, no nepodarilo sa mi to, aby sa IE8 v tomto správal rovnako ako iné prehliadače.
Mám stejnou zkušenost se staršími verzemi Exploreru. Jakmile zničíš okno, ve kterém byl objekt vytvořený, je po objektu a veškeré pokusy o práci s ním skončí chybovou hláškou. Nevím, jak v jiných jazycích, ale v češtině je ta hláška zformulovaná docela vtipně:
  „Volaný (server [ne aplikace na serveru]) není k dispozici a zmizel; všechna připojení jsou neplatná. Volání neproběhlo.“
_es
Profil
Chamurappi
Mne sa objavuje hláška:
Hlásenie: Ohlásený objekt bol odpojený od jeho klientov.
Doplnenie: Hláška je závislá od toho, či bol odkaz otvorený do nového okna, alebo novej karty, v závislosti od toho sú tie dve možnosti.
Joker
Profil
_es:
Tak s touhle hlášku jsem taky v IE taky setkal ("object has disconnected from its clients" myslím)... už si ale nevzpomínám při jaké příležitosti.
Díky za info ohledně příčiny :)
peta
Profil
Ja v tom ale nevidim problem. Zavres okno, objekty v okne zaniknou. Ze si to ve scripte nepohlidas, to je znamkou kvality programatora.
if (opener.o) {
...
}
else
{alert('okno je zavrene');}
Chamurappi
Profil
Reaguji na peta:
Ze si to ve scripte nepohlidas, to je znamkou kvality programatora.
Ten tvůj kousek kódu také vyvolá zmíněnou výjimku.
_es
Profil
peta
Zavres okno, objekty v okne zaniknou.

Tie objekty (odkazy na tie objekty) v tom zatváranom okne už vôbec nemusia byť.
Chyba v IE nastáva, aj keď sa tie objekty prostredníctvom toho zatváraného okna len vytvoria v inom okne a aj keď sa v tom zatváranom okne explicitne vymažú a teda potom vlastne existujú len v inom ako zatváranom okne.
Iné prehliadače sa tak nesprávajú.
Nie je problém v IE zistiť, či bolo okno zavreté.
Problém je v skripte v okne x priradiť do okna y objekt, ktorý by existoval aj po zavretí okna x.
V iných prehliadačoch to ide bez problémov, nejde to len v IE.

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