Autor Zpráva
habendorf
Profil
Z mateřské stránky mám otvírané pomocí JS okno "ThumbnailWnd". Pokud na mateřské stránce kliknu na nějaký odkaz, chci aby se ThumbnailWnd zavřelo. Proto mám u každého linku
onClick="if (ThumbnailWnd != null) { ThumbnailWnd.close() }"

To funguje bez problémů. Pak mě napadlo, že bych ThumbnailWnd potřeboval zavřít i při zavření okna mateřské stránky. Takže jsem zkusil v mateřské stránce
<body onUnload="if (ThumbnailWnd != null) { ThumbnailWnd.close() }">
ale nefunguje mi to :o(
1) Nevíte někdo prosím co s tím?
2) Chápu to dobře, že kdybych rozchodil to onUnload, tak můžu vyházet ty onClicky u všech linků (že to řeší ten onUnload a tudíž už budou zbytečné)?
Leo
Profil
A hlasi to nejakou chybu, me to v IE6 normalne beha, ale je pravda, ze v ovladaci onunload nemam primo kod, ale volam funkce definovane predtim. Jinak test na rovnost null (de facto existence okna jako objektu) nestaci / uzivatel muze nove okno zavrit, a i pak je objekt noveh okna existujici, i kdyz je okno zavrene. Musite testovat i vlastnost closed toho noveho okna. Leo
habendorf
Profil
Chybu to nehlásí, jen to to okno prostě nezavře.
Zkusím udělat fci zavriOkno(), která bude testovat null i closed a případně zavře okno, tu zkusím volat při onUnload a uvidíme.
Leo ještě prosím odpověď na druhou otázku 2) Chápu to dobře, že kdybych ...
habendorf
Profil
Jinak test na rovnost null (de facto existence okna jako objektu) nestaci / uzivatel muze nove okno zavrit, a i pak je objekt noveh okna existujici, i kdyz je okno zavrene. Musite testovat i vlastnost closed toho noveho okna.

Teď mi došlo že to closed vlastně testovat nemusím - pokud ho uživatel zavřel sám, tak ho už zavírat nemusím.
Fred
Profil
Já teda na tom většinou nebývám příliš dobře a tak se téměř ostýchám zeptat proč nepoužít onfocus a onblur
1/Pokud na mateřské stránce kliknu na nějaký odkaz, chci aby se ThumbnailWnd zavřelo - body on focus a popup onblur zavřít
2/ bych ThumbnailWnd potřeboval zavřít i při zavření okna mateřské stránky- už je zavřené
habendorf
Profil
Fred: mám dojem že si úplně nerozumíme.
Okno zavírám takto:
function CloseBrowser()

{
if(ThumbnailWnd && !ThumbnailWnd.closed)
{
ThumbnailWnd.close();
ThumbnailWnd=null;
}
}


U linků na stránce mám:
<a href="něco" onClick="CloseBrowser()">
a funguje to bezvadně.
Ale
<body onUnload="CloseBrowser()">
nefunguje a vůbec nevím proč.
Celé je to k vidění např zde: http://web.telecom.cz/kudela/tw/tw.htm. (Naschvál dávám stránku s nejmenším počtem obrázků).
habendorf
Profil
Tak teď jsem zjistil jednu věc: pokud má ThumbnailWnd focus a já kliknu na zavírátko okna mateřský stránky (který je na pozadí), tak se ThumbnailWnd v pohodě zavře. Ale pokud je ThumbnailWnd na pozadí, tak se nezavře. Uff, začíná mě to dožírat.
Fred
Profil
Já myslím, že rozumíme jenom se neumím vyjadřovat. Uploadoval jsem jednou nerealizovanou 2 roky starou záležitost, kde mám něco podobnýho udělaný (už mám těch hovadin plnej komp, asi bych měl přestat dělat webíky do šuplíku), zavírá se to na focus a blur, je to míň kódu.
:-) Je to stará věc tzn. není to tu ke kritice :-)
http://xy.wz.cz/stare-hruzy/gall2.htm (jestli se tam někomu hodí nějaké ty pokusy o grafiku je to tam pro něj)
habendorf
Profil
Všem díky a zároveň se omlouvám za zmatky, ono to asi funguje. Já to vždy nedočkavě hned zkoušel, než se celá stránka načetla (GPRS) a v tom byl možná problém. Možná nemůže onUnload proběhnout, dokud není onLoad (stránka kompletně načtená).
Frede, můžu poprosit - můžeš prosím otestovat chování na tom linku co jsem uvedl?
Leo
Profil
Me se normalne nove okno pri opusteni puvodni strany zavira (IE6, Firefox). At uz focus ma nebo ne, nechte restartovat masinu? Leo
habendorf
Profil
Leo: Ano, zdá se že to funguje, asi jsem trochu zmatkoval, viz můj předchozí příspěvek.
Ještě jednou díky.
Leo
Profil
Jinak k tomu kodu par vyhrad - je SILENE dlouhy a datove obsahly (coz jste urcite na GPRS sam zjistil), takze bz to chtelo ho zkratit a napsat do externiho js souboru, jednak to s vypnutym JavaScriptem neukaze ty velke obrazky vubec... Leo
Fred
Profil
No možná, že tak úplně ne, je tam ještě někde něco schnilého. Když je ten popup nahoře vše je skoro v pohodě, jenom se mi nad ním nechce zmizet kurzor přesýpaček, takže je tam asi problém v těch preloadech, možná by stačilo načítat jenom další obrázek, zdá se mi , že se načítají všechny. Pokud zmenším okno openeru tak abych mohl dostat ten popup pod opener zamražuje mi to prohlížeč, nejdřív jsem použil kouzelný trojklik, pak jsem zkusil počkat a tak po 1,5 minutě se to popunder zavřelo a prohlížeč rozmrznul (Používám Firebird 0.7) . Jo přeměřil jsem si pro jistotu rychlost připojení na dsl.cz mám 70 Kbps . Jdu to ještě zkusit s operou
Fred
Profil
Tak přesýpačky a ten druhý problém jsou na Gecku
Mozilla 1.7.2 , K-meleon 0.7 , Firebird 0.7 , Firefox 1.0 , Netscape 7.2 + WinXp

Opera v pohodě
Opera 7.23 , Opera 7.5
Opera 8 beta má zcela zjevný bug. Vůbec nezobrazí obsah popup okna generovaného pomocí js , je jakoby posunutý nahoru mimo obsah okna a je vidět linka pozadí tak 2px nahoře, ale to se mi stalo už na hodně místech
habendorf
Profil
jj, o přesýpačkách na Gecku vím, ale nevím co s tím. Sice to jakoby na něco čeká, ale data nejedou (podle indikátoru modemu).
Fred
Profil
Něco se tam neuzavírá, při pokusu zobrazit ve Firefoxu vygenerovaný zdrojový kód v popup oknu jsem vydržel 3 minuty koukat na prázdnou obrazovku, než jsem to vzdal, to samé Opera , tak jsem tam vlez s IE a problém jsou ty zpětný lomítka tady v tom kódu co to generuje
<BODY onLoad="MM_preloadImages('../thumbtna2.gif','#1');MM_preloadImages('.. /thumbtnb2.gif','#2');MM_preloadImages('../thumbtnc2.gif','#3');MM_pre loadImages('../thumbtnd2.gif','#4')">
Fred
Profil
Tak nevím kde jsem sakra viděl ty zpětný lomítka :-(
habendorf
Profil
Fred: to <BODY onLoad="MM_preloadImages('../thumbtna2.gif','#1');MM_preloadImages('.. /thumbtnb2.gif','#2');MM_preloadImages('../thumbtnc2.gif','#3');MM_pre loadImages('../thumbtnd2.gif','#4')"> by mělo preloadnout hover obrázky pro ty ovládací šipky, ale asi to nefunguje. To ../ je tam samozřejmě kvůli adresářové struktuře (relativní adresování). Ale mám pocit že je to nepreloaduje a navíc to asi opravdu zlobí. Jak to tam tedy napsat korektně?
Fred
Profil
Asi bych to celý udělal úplně jinak, neotvíral bych to do popup ale do divu , je toho moc spíš na článek, a já neumím teorii a základy. Ale tenhle pokus je myslím velká vychytávka http://xy.wz.cz/popup-galerie/ . Kliknout na odkaz galerie .
Nastane několik věcí
1/ pokud je js a DOM , přepíše to na onload adresu toho hrefu na javascript a ten funguje jako bookmarklet
2/spustí to bookmarkletovou galerii (kdyby to js v tom scriptu nemělo relativní cestu k tomu druhému js zobrazil bych si ji třeba tady)
3/Scripty a css k tomu má celkem 9.38kb bez obrázků, polovinu objemu zabírá ten dragable script co tam nemusí být. Je to normálně k mání pod heslem nejsem právník ve zdrojáku

Myslím, že po drobné úpravě by to dělalo úplně to samý co ten script u těch pohledů a navíc bez popup. Stačí vyhodit dragable, zvětšit velikost generovaného divu přes css a js, přidat funkcionalitu na další a předchozí obrázek, nebylo by to asi o moc větší než to teď je.
habendorf
Profil
To je sice hezký, ale nemohu to použít. Tady jsou pohledy čtyři, ale na jiný stránce jich mám třeba 85, kam bych to narval...
Jinak zatím díky za snahu, budu se s tím zase chvíli prát sám. A teď jdu dát chladit šampus... :o)
Fred
Profil
Zajímavá myšlenka co mě držela dva dny. Výsledek http://xy.wz.cz/habendorf/ , třeba i pro 85 pohledů, je třeba pouze zadat počet pohledů a cestu ke složce, a do array popisy obrázků, šlo by to udělat i tak, že by si to ty popisy bralo z title od odkazů, tohle si bere popisy z title při vytvoření divu.
Fred
Profil
PS: nedával jsem tam preload, tak je třeba občas počkat
Fred
Profil
PS: nedával jsem tam preload, tak je třeba občas počkat
habendorf
Profil
Jo, to je pěkný, původně jsem to chtěl taky nějak takhle řešit. Pak jsem ale zvolil ten popup - pořád nechápu jak bych to udělal pro 85 obrázků? Tedy přesně - jak bych to uspořádal všechno na jednu obrazovku?
Mrkni třeba sem, to už je trochu plnější...
Jinak dík za snahu, časem zkusím ten skript trochu optimalizovat.
Fred
Profil
No šlo by to ostylovat aby se to rozáho přes celou obrazovku. Ten script tady http://xy.wz.cz/habendorf/dynhref.js přepíše odkazy a pošle původní parametry hrefů a titulků do hidden inputů, který se pak použijí v tom co DOM napíše. Tady se sestrojí ta kostra http://xy.wz.cz/habendorf/dynpopgal.js . Jediný co je třeba zadat nějaké parametry.
var kdeJsouApripona="vk"; //cesta k obrázku plus předpona vk1.jpg , počítá to od 1 do 85 (01-09 by se muselo přejmenovat na 1-9)
var pocet=85;//počet obrázků na který se to vztahuje, 85
var rychlost=2000;// pokud se použije to autoplay , rychlost načítání , tu fci bych asi umáznul pro tolik obrázků

Tohle vypočítává navigaci (getId=getElementById zkratka kvůli objemu dat)
function prejit(kam){
if(kam>0 && kam<pocet+1 ){
getId('obr').src=kdeJsouApripona+kam+".jpg";
getId('kam').value=kam
var xxx=popis[kam-1]
txt(xxx)
}}
function predchozi(){prejit(parseInt(getId('kam').value)-1);}
function prvni(){prejit(1)}
function dalsi(){prejit(parseInt(getId('kam').value)+1);}
function posledni(){prejit(pocet)}


Jediný co je třeba vložit do stránky jsou dva inputy a ten první js
<script type="text/javascript" src="dynhref.js"></script>
<input type=hidden id="plus" name="plus" value="">
<input type=hidden id="pluspopis" name="pluspopis" value="">


Problém o kterém vím je Opera 7.23 provede , zamění href, ale nějak to neumí. Nižší verze v klidu otevře .jpg , vyšší verze funguje tak jak má.
Neumí tenhle kousek kódu
javascript:void(z=d.body.appendChild(d.createElement("script")));void( z.language="javascript");void(z.type="text/javascript");void(z.src="dy npopgal.js");void(z.charset="windows-1250");
habendorf
Profil
Fred: Problém "přesýpaček" vyřešen zde (díky Leo): http://diskuse.jakpsatweb.cz/index.php?action=vthread&topic=2495&forum =8&page=-1 .
Toto téma je uzamčeno. Odpověď nelze zaslat.