Autor Zpráva
tito100
Profil
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
mattyZEM
Profil
tito100:
ukážka https://www.mzabrno/indikacniskici/test.html
V životě jsem neviděl doménu "html".
Bubák
Profil
mattyZEM:
Špatně jsi to pochopil, porovnej:
https://www.mzabrno/indikacniskici/test.html
http://wellstyled.com/css-nopreload-rollovers.html
mattyZEM
Profil
Bubák:
Špatně jsi to pochopil
Nepochopil jsem to špatně, jen upozorňuji, že chybí v odkazu doména ;)
_es
Profil
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
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
tito100:
A čo to má vlastne robiť?
Skús popísať čo to má robiť a nerobí.
tito100
Profil
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
tito100:
Tak to bude asi nejaký problém s Flashom, ten má vlastné skripty a nastavenia.
tito100
Profil
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
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
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
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
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
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
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
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
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
_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
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.

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