Autor | Zpráva | ||
---|---|---|---|
_es Profil |
#1 · Zasláno: 23. 9. 2009, 13:06:57 · Upravil/a: _es
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 |
#2 · Zasláno: 23. 9. 2009, 13:47:17
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 |
#3 · Zasláno: 23. 9. 2009, 13:58:53 · Upravil/a: _es
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 |
#4 · Zasláno: 23. 9. 2009, 14:03:12 · Upravil/a: Joker
_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 |
#5 · Zasláno: 25. 9. 2009, 15:42:20
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 |
#6 · Zasláno: 25. 9. 2009, 16:22:38
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. |
||
Časová prodleva: 3 dny
|
|||
_es Profil |
#7 · Zasláno: 28. 9. 2009, 09:46:16
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. |
||
Časová prodleva: 15 let
|
0