Autor | Zpráva | ||
---|---|---|---|
habendorf Profil |
#1 · Zasláno: 31. 12. 2004, 15:49:20
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 |
#2 · Zasláno: 31. 12. 2004, 16:03:19
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 |
#3 · Zasláno: 31. 12. 2004, 16:10:45
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 |
#4 · Zasláno: 31. 12. 2004, 16:16:30
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 |
#5 · Zasláno: 31. 12. 2004, 16:28:56
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 |
#6 · Zasláno: 31. 12. 2004, 16:45:59
Fred: mám dojem že si úplně nerozumíme.
Okno zavírám takto: function CloseBrowser() 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 |
#7 · Zasláno: 31. 12. 2004, 17:02:59
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 |
#8 · Zasláno: 31. 12. 2004, 17:06:28
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 |
#9 · Zasláno: 31. 12. 2004, 17:11:28
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 |
#10 · Zasláno: 31. 12. 2004, 17:16:57
Me se normalne nove okno pri opusteni puvodni strany zavira (IE6, Firefox). At uz focus ma nebo ne, nechte restartovat masinu? Leo
|
||
habendorf Profil |
#11 · Zasláno: 31. 12. 2004, 17:25:15
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 |
#12 · Zasláno: 31. 12. 2004, 17:28:50
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 |
#13 · Zasláno: 31. 12. 2004, 17:41:06
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 |
#14 · Zasláno: 31. 12. 2004, 17:54:46
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 |
#15 · Zasláno: 31. 12. 2004, 19:18:32
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 |
#16 · Zasláno: 31. 12. 2004, 19:20:40 · Upravil/a: Fred
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 |
#17 · Zasláno: 31. 12. 2004, 19:26:24
Tak nevím kde jsem sakra viděl ty zpětný lomítka :-(
|
||
habendorf Profil |
#18 · Zasláno: 31. 12. 2004, 19:29:55
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 |
#19 · Zasláno: 31. 12. 2004, 20:02:25
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 |
#20 · Zasláno: 31. 12. 2004, 20:18:10
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 |
#21 · Zasláno: 2. 1. 2005, 04:34:17
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 |
#22 · Zasláno: 2. 1. 2005, 04:38:21
PS: nedával jsem tam preload, tak je třeba občas počkat
|
||
Fred Profil |
#23 · Zasláno: 2. 1. 2005, 04:39:55
PS: nedával jsem tam preload, tak je třeba občas počkat
|
||
habendorf Profil |
#24 · Zasláno: 3. 1. 2005, 17:25:41
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 |
#25 · Zasláno: 3. 1. 2005, 17:55:32
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"); |
||
Časová prodleva: 22 dní
|
|||
habendorf Profil |
#26 · Zasláno: 25. 1. 2005, 17:12:54
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 .
|
||
Časová prodleva: 20 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0