Autor | Zpráva | ||
---|---|---|---|
tito100 Profil |
#1 · Zasláno: 18. 5. 2010, 09:22:57 · Upravil/a: tito100
zdravým. prosil by som o radu, pri metode window.focus()
okno otváram takto var varOrderPage=false; var order_win; function showOrder() { if (varOrderPage) { order_win.focus(); }else { order_win=window.open("order.php", "order_window"); if (!order_win.opener) {order_win.opener=this;} order_win.focus(); varOrderPage=true; } } ked otvorím okno prvý krát . tak focus funguje. ked je okno však už otvorené, a ja sa chcem nan len prepnuť, tak už nefunguje. ukážka https://www.mzabrno/indikacniskici/test.html je treba dat vyhladat. v zozname kliknut na náhlad. vo flashi pak kliknut na 3 ikonku z lava. a následne odoslat objednávku. tam sa otvorý nové okno. ked na to však kliknem druhý krát. tak sa focus nezmení. stránka sa však korektne aktualizuje skúšal som aj použit časovač. nepomohlo setTimeout("order_win.focus()",10); vopred dakujem za rady |
||
Časová prodleva: 5 dní
|
|||
mattyZEM Profil |
#2 · Zasláno: 23. 5. 2010, 05:12:58
tito100:
„ukážka ht>tps://w>ww.mzabrno/indikacniskici/test.html“ V životě jsem neviděl doménu "html". |
||
Bubák Profil |
#3 · Zasláno: 23. 5. 2010, 06:53:42
mattyZEM:
Špatně jsi to pochopil, porovnej: https://www.mzabrno/indikacniskici/test.html http://wellstyled.com/css-nopreload-rollovers.html |
||
mattyZEM Profil |
#4 · Zasláno: 23. 5. 2010, 07:04:54
Bubák:
„Špatně jsi to pochopil“ Nepochopil jsem to špatně, jen upozorňuji, že chybí v odkazu doména ;) |
||
_es Profil |
#5 · Zasláno: 23. 5. 2010, 09:11:41
tito100:
Dal si nefunkčný odkaz. Celý ten skript vyzerá divne. Načo ti tam je premenná varOrderPage ?
Vlastnosť opener objektu okna je tuším len na čítanie.
Skús radšej zrozumiteľne vysvetliť, čo to má vlastne celé robiť. |
||
tito100 Profil |
#6 · Zasláno: 24. 5. 2010, 07:55:50
prepačte za ten odkaz. to bol odkaz priamo na interný server
https://www.mza.cz/indikacniskici/test.html to if (!order_win.opener) {order_win.opener=this;} tam je preto, keby že niektorý prehladač nepodporuje. |
||
_es Profil |
#7 · Zasláno: 24. 5. 2010, 08:14:17
tito100:
A čo to má vlastne robiť? Skús popísať čo to má robiť a nerobí. |
||
tito100 Profil |
#8 · Zasláno: 24. 5. 2010, 10:47:32 · Upravil/a: tito100
treba vyhladat niejaký názov. alebo kliknut na index napríklad B
potom v zobrazenoom zozname kliknut na lupu - zobrazí sa flash v tom flasi kliknut na druhu ikonku z lava. - zobrazi sa zoznam v tom zozname kliknut na tlačitko odoslat objednávku - zobrazí sa nová stránka z folmulárom ked však ručne prepnem naspen na stranku z flashom, a znova kliknem na to tlačitko odoslat folmular, tak sa mi už neprepne na tu stránku z folmulárom.- nefuguje order_win.focus(); rovnká problem mam aj v administracii pri inej priležitosti, čo však ukazat nemožem. |
||
_es Profil |
#9 · Zasláno: 24. 5. 2010, 13:06:35
tito100:
Tak to bude asi nejaký problém s Flashom, ten má vlastné skripty a nastavenia. |
||
tito100 Profil |
#10 · Zasláno: 24. 5. 2010, 13:59:39
ja to predca robým cez JS. flashom len zavolam funkciu v ktorej to prepinam. a ta funkcia sa volá korektne.
aj ked mohlo by to blokovat flash, ale to sa mi nezdá. |
||
_es Profil |
#11 · Zasláno: 24. 5. 2010, 14:21:47
tito100:
Stále tomu nerozumiem. Načo tam teda ten Flash vôbec je? Na to prepojenie JS a Flashu nie som odborník. Akým spôsobom to nové okno otváraš? Ak dáš predsa otvoriť nové okno, v HTML a JS s názvom "_blank", tak sa predsa nemusíš starať o to, či nejaké "staré" okno nezostalo otvorené. A niektoré prehliadače možu zakazovať prepínanie okien cez JS. |
||
tito100 Profil |
#12 · Zasláno: 24. 5. 2010, 14:30:04 · Upravil/a: tito100
https://www.mza.cz/indikacniskici/js/order.js
z flashu volam funkciu showOrder() , a tak to okno otvaram a volam hu preto z flashu, lebo musim. ide o to, že prvykrát mi to prepne správne. ked to však chcem spravit druhykrát, tak to už neprepe. teda pokial je okno stale otvorene |
||
_es Profil |
#13 · Zasláno: 24. 5. 2010, 14:43:02
tito100:
Nechce sa mi ten skript podrobne študovať, mám podozrenie, že tam je veľa komplikujúcich zbytočností. Tipujem základ problému asi tento: Ak otvoríš okno s názvom "order_window" , a ešte neexistuje okno s názvom "order_window" , tak sa otvorí nové okno s názvom "order_window" .
No ak už okno s názvom "order_window" existuje, alebo ešte nejako existuje objekt zavretého okna s názvom "order_window" , tak sa nové okno neotvorí, ale sa prehliadač pokúša pracovať s pôvodným oknom.
Takže otváraj nové okná s názvom "_blank" a máš asi po probléme.
|
||
tito100 Profil |
#14 · Zasláno: 24. 5. 2010, 14:54:52
ale ja predca nikde nekontrolujem piamo okno. jedne čo kontrolujem je to či existuje metoda otvoreneho okno, čiže tu ta tebou popisana výnimka nastat nemože.
a potom. tá práca z tými oknomi funguje, ako som už písal. jedine nefunguje focus. stručne povedane, komunikacia medzy oknami prebieha správne. nedokažem však aktivovat ine truhe okno. |
||
tito100 Profil |
#15 · Zasláno: 24. 5. 2010, 15:04:45 · Upravil/a: tito100
btv. ten kod som davnejšie troska pozmenil
var varOrderPage=false; var child; function showOrder() { if (varOrderPage) { if (!child.reload) { varOrderPage=false; showOrder(); return (true); } child.focus(); child.reload(); }else { child=window.open("order.php"); if (!child.opener) {child.opener=this;} varOrderPage=true; } //setTimeout("child.focus()",10); } |
||
_es Profil |
#16 · Zasláno: 24. 5. 2010, 15:06:54
tito100:
„ale ja predca nikde nekontrolujem piamo okno“ Pozri si 10 riadok, metóda window.open funguje presne tak, ako som popísal.
A celkovo to je zle navrhnuté. Načo sa vôbec staráš, či už okno bolo otvorené? Otvor všeobecné nové okno s názvom "_blank" a máš ten focus automaticky.
|
||
tito100 Profil |
#17 · Zasláno: 24. 5. 2010, 15:24:08 · Upravil/a: tito100
no ano. to by fungovalo. ale to nieje predca riešenie.
ja nechcem zakaždým otvoriť nové okno. chcem pracovat z tým, už otvoreným. ako jasne je to detal, že sa to okno celé zrefrešuje. ale ako vravym to nieje riešenie. ja s tým oknom totiž komunikujem. akvšak, kedže mi nefunguje to focus, tak hold sa muím prispůsobit tomuto . Ja ti _es dakujem za trpezlivost, a rady :-) EDIT ale nie. až teraz som si všimol že mi to otvorilo zakaždým uplne nove okno, a to nieje vobec dobre mam to takto _blank=window.open("order.php","_blank"); _blank.reload(); |
||
_es Profil |
#18 · Zasláno: 24. 5. 2010, 15:45:34 · Upravil/a: _es
tito100:
„ja nechcem zakaždým otvoriť nové okno. chcem pracovat z tým, už otvoreným.“ „až teraz som si všimol že mi to otvorilo zakaždým uplne nove okno, a to nieje vobec dobre“ Prečo by si nemohol návštevník najprv otvoriť tri objednávky, potom ich odoslať a potom ich zavrieť? Prečo mu chceš takýto spôsob práce znemožniť? No ak mu to chceš silou mocou znemožniť, tak môžeš to predchádzajúce okno vždy zavrieť. „to nieje riešenie. ja s tým oknom totiž komunikujem. “ To, či s ním môžeš komunikovať predsa nezávisí od toho, ako bolo otvorené. Môže jedno hlavné okno kľudne komunikovať s ďalšími desiatimi otvorenými oknami. Ináč tam bude ešte problém s premennou varOrderPage .
Neodpovedal si, na čo ti tam je. Veď ona vôbec s tým otvoreným oknom nesúvisí. Čo ak návštevník to okno zavrie? Tak isto nepotrebuješ vlastnosť opener .
|
||
tito100 Profil |
#19 · Zasláno: 25. 5. 2010, 07:00:58 · Upravil/a: tito100
_es:
„Prečo by si nemohol návštevník najprv otvoriť tri objednávky“ no nevidím najmenší důvod. prečo by mal odosielať tri objednávky. „To, či s ním môžeš komunikovať predsa nezávisí od toho, ako bolo otvorené.“ no ide o to, že som si nevšimol že sa otvaraju nove okna, myslel som že sa stale refrešuje to jedno. „Ináč tam bude ešte problém s premennou varOrderPage.“ ano ta premenna tam nemusí byť. ale ani tomu nijak nevadí. a ked navštevnik okno zavrie, tak sa predca vykoná : if (!child.reload) { varOrderPage=false; no a opener je predca globalna premenna. v tom otvorenom okne sa odkazujem s nou na rodičovske okno. if (!child.opener) {child.opener=this;} tam je preto, keby niejaký prehliadač tú vlastnost nemal btv. už som našiel riešenie. ked okno otvorím takto okno2 = window.open('order.php', '','fullscreen') tak sa otvori v novom okne, a focus už funguje. predtým mi to otváralo len na novej záložke, a tam focus nefungoval |
||
_es Profil |
#20 · Zasláno: 25. 5. 2010, 16:30:20
tito100:
„no nevidím najmenší důvod. prečo by mal odosielať tri objednávky.“ To tá objednávka nesúvisí s tým zvoleným miestom? Ak súvisí, nemôže si objednať tri mapy - či čo si to vlastne objednáva? „a ked navštevnik okno zavrie, tak sa predca vykoná :“ Tak sa nemusí vykonať nič, len sa zavrie okno a tá premenná zostane tak, ako je. Ak sa zavrie okno, tak objekt okna zostane, no jeho vlastnosť closed bude true .
Takže je lepšie využiť toto, než nejaké podivné nesúvisiace premenné. A prečo nechceš použiť štandardný názov pre nové okno "_blank" a používaš niečo špeciálne, kde nie je istota, ako sa to bude správať v rôznych prehliadačoch? „no a opener je predca globalna premenna. v tom otvorenom okne sa odkazujem s nou na rodičovske okno.“ Do toho okna môžeš zadať aj rôzne funkcie z hlavného okna a nemusíš sa potom explicitne odkazovať na iné okno. Na tú objednávku ani nemusíš mať extra súbor, môžeš ju celú vytvoriť cez metódu document.write .
„predtým mi to otváralo len na novej záložke, a tam focus nefungoval“ Takéto veci si vyskúšaj v rôznych prehliadačoch, aby si nebol neskôr prekvapený reakciami návštevníkov. |
||
Časová prodleva: 14 let
|
0