Autor Zpráva
Rob
Profil
Zdravím,
Nějakou události otevřu spuštěné v okně A pomocí window.open(potřebné údaje) okno, říkejme mu třeba B. A další událostí provedenou v okně A potřebuji zavřít okno B. Zkoušel jsem window.close(jméno okna B zadané v příkazu window.open()), ale událost mi pořád zavírá okno A. Myslím, že to je jednoduché, ale prostě na to nemohu přijít.
Za radu díky!
Oswald
Profil

window.opener.close();
Oswald
Profil
Teď nevim, jestli jsem to pochopil správně. Myslel jsem, že z okna A otevřeš okno B a událostí v B chceš potom zavřít okno A.

Teď mi spíš přijde, že chceš naopak zavřít okno B událostí vyvolanou v okně A, pokud je to takhle, tak:


var B = window.open(potřebné údaje); // otevreni okna
B.close(); // zavreni


Metoda window.open() vratí objekt (referenci na objekt) window nově otevřeného okna, proto close() musíš volat nad ním.
Rob
Profil
Nechce mi to fungovat. Háže mi to chybu, že window.opener má hodnotu null nebo není objekt. Možná něco chybí, zkuste to kdyžtak prosím konkrétizovat.
Rob
Profil
Pardon, druhá odpověď naskočila až po odeslání toho mého.
Rob
Profil
Proměnnou se nedaří zařadit do události. Ukazuje to že B není definováno. Prosím o ještě nějakou radu.

Vysvětlím o co mi přesně jde:
Budu dělat fotogalerii. Fotky na stránce galerie budou natolik malé, že bude jen těžko viditelné, co na nich je. Po kliknutí na tu fotografii se zobrazí v plné velikosti. Problém je ten, že návštěvník neví, co otvírá a načítání fotografie bude trvat dlouho. Proto mě napadlo:
Po najetí myši na tu malinkou fotku - tj. onMouseOver se otevře okno, kde se zobrazí náhled fotografie, nebude to plná velikost, ale bude vidět co to je a jednoduše řečeno: pokud se návštěvníkovi fotka bude líbit, tak si klikne a zobrazí v plné velikosti.
Po sjetí myši z fotky, se okno z náhledem zase zavře. To jsem vyřešil takto: onMouseOut="window.focus()" a v okně, které se otevře je v body: onBlur="window.close()". Takže když se sjede myší, okno se posune do popředí a tím, že se to druhé posune do pozadí se zavře, ALE. Těch fotek bude asi hodně a nechce se mi kvůli nim vytvářet další html soubory. Proto je nutné okno zavřít z domovské stránky a po najetí myši neotevírat html, ale jpg. Snad jsem to příblížil dostatečně.
Oswald
Profil
Asi je problém v tom, že to okno otevíráš v nějaké svojí funkci a zavíráš ho někde jinde - v jiném oboru platnosti (jiná funkce nebo glob. obor). V tom případě je B v té funkci lokální a ostatní části programu jí nevidí. Pokud je moje dedukce správná, stačí odstranit "var" z:

var B = window.open(potřebné údaje).


...čímž se B stane globální a můžeš jí použít kdekoliv.
Rob
Profil
Pro Oswald:

V žádné funkci to není. Možná ses k tomu nedostal, přečti si v předchozím příspěvku "Vysvetlim o co přesně mi jde". Pak mi snad budeš schopen pomoci.
Fred
Profil
Rob Ten popis mě fakt děsí, to zní jako zámek hrůzy. Co třeba takhle sinpps.cz/jana-masaryka.php ?
Rob
Profil
Pro Fred:
To vypadá dobře, ale já si s PHP bohužel netykám a navíc se už musí klikat. Já chci po kliknutí plnou velikost a po najetí myši jen něco menšího jako náhled. Ale každopádně velice děkuji za snahu.
Fred
Profil
Rob K tomu není potřeba ani řádek php, jen js a css.
peta
Profil *
www.volny.cz/peter.mlich/www.htm
z hora asi 4ty nadpis a odkaz tusim "ukazka3"

ten img si nejak napozicujes pomoci css a js

dale vcera jsem videl pekny priklad na DOM
http://icant.co.uk/articles/dyngallery/gallery.html
Rob
Profil
Pro Fred:
Uznávám, že jsem to moc nezkoumal, ale ono je to trochu mimo. To co potřebuji já je pouze jednoduché otevření okna a následně ze stejného okna, které to otevřelo ho znovu zavřít. Uznávám, že to co jste mi doporučil vypadá hezky, ale pořád je to něco trochu jiného. Na JavaScripty jsem si koupil nějakou knihu a i když jsem ji přečetl tak v některých věcech jsem úplně mimo. Proto si myslím, že i když tohle nëumím, tak to musí být úplně jednoduché.
Fred
Profil
peta Jo ten je pěknej tady je k tomu tutoriál, ale ten scritpík tam musí být už opravený, předtím mi nefungoval správně. Viz diskuse pod článkem.

Rob Stačí přilinkovat ten javascript. Starší verzi mám tady http://xy.wz.cz/galerka/
Fred
Profil
Aha tady je ten článek http://www.devarticles.com/c/a/Web-Style-Sheets/Dynamic-Galleries-with -DOM-and-CSS/
Rob
Profil
Všechno to jsou zajímavé návrhy, ale pořád to není to co já hledám. Ale napadla mě jedna alternativa: jakým příkazem zadat do nějakého <iframe>u adresu. Prostě najedu na tu fotku a v ifrejmu vedle galerie se změní adresa. myslím, že nějak document.iframe.jmeno_frejmu.src(nebo.URL)=nejaka_fotka.jpg; nebo tak nějak, ale nefunguje mi to. Můžete mi prosím někdo upřesnit jak ten kód má přesně vypadat.
Leo
Profil
Asi to nechcete slyset, ale osobne bych proste zvetsil ty nahledy, aby uzivatel vedel, co na nich priblizne je, Leo
peta
Profil *
Co tak pouzit klasickou akci otevirani okna?

function okenko(zwww,zx,zy)
{ window.open(zwww+".htm","miniokenko","scrollbars,resizable,width="+zx+ ",height="+zy+",left=0,top=0") }
<a href="#key9" onclick="okenko('key',400,500);return false"><img src="obr/key/9.jpg" alt="PokladniŔka" height="150" width="200" /></a>

A kdyz kliknu na jiny odkaz, okenko se prepisuje, proc?
protoze ma pojmenovani 'miniokenko'
Takze jak se zavira okenko s nazvem 'miniokenko'?
co treba parent.miniokenko.window.close()? nebo neco takoveho... Myslim, ze se s tim pracuje jako s frame...

Mimochodem vyskakovaci okenka windows.open se v modernich prohlizecich default blokuji (explorer s upgrady, firefox a spol) Teda pokud jsou zarazeny do onload, normalne funguji, myslim.
Rob
Profil
Pro peta:
Ještě jsem to navyzkoušel, ale mohlo by to fungovat. Zatim dik.
Rob
Profil
Heuréka!

Problém vyřešen. Rozhodující možnost naskytl/a peta a velmi mu/ji děkuji.

Pro ostatní:
Jak jsem to tedy vyřešil?
do html galerie:
<a target="_bottom" href="foto.jpg"><img src="foto.jpg" width="100" height="100" border="0" onMouseOver="otevri('foto.jpg');"></a>
Je to dobré v tom, že si vytvoříte základ a pak jenom jméno fotky nakopírujete třikrát k jednomu zápisu, takže pro použití nic těžkého. A taky v tom, že velikost otevřeného okna si upraví velikost fotografie pro náhled.
do scriptu:
function otevri(jmeno)
{
window.open(jmeno,"okno","width=200,height=200,top=200,left=300");
}
Hodnoty jsou samozřejmě pokusné.
A možné vylepšení:
Uděláme nějaké tlačítko, div nebo jenom text, u kterého onMouseOver otevře stejně jako u fotky, ale html soubor třeba "zavrit.htm" a tam napíšeme:
<html>
<head>
</head>
<body onLoad="window.close();">
</body>
</html>
a nebo o mnoho efektněji!!!:
přidáme k <img> událost onMouseOut="otevri('zavri.htm');" v celku tedy: <a target="_bottom" href="foto.jpg"><img src="foto.jpg" width="100" height="100" border="0" onMouseOver="otevri('foto.jpg');" onMouseOut="otevri('zavri.htm');"></a> a aby to tam pořád trapně neskákalo tak do souboru zavri.htm zadáme:
<html>
<head>
</head>
<body onLoad="setTimeout('window.close();',2000);">
</body>
</html>
Zpoždění zajistí, aby návštěvník stihnul otevřít najetím na novou fotku v tom okně nový náhled. Okno se zavře teprve když návštěvník skončí s prohlížením galerie. Jenom možná by ten čas měl být o něco víc než ty dvě vteřiny, ale to záleží na individuálním hodnocení.

Vypadá to dobře, je to docela efektní, ostudu to na stránkách neudělá a je to i velmi jednoduché. Takže se klidně nechte inspirovat.
Toto téma je uzamčeno. Odpověď nelze zaslat.