Autor Zpráva
janek
Profil
ahoj,
Javascript není moje hoby, ale potřeboval bych poradit, jak jednoduše zavřít okno prohlížeče po uplynutí určité doby na stránce.
Taky by se mi hodila nějaká funkce pro vymazání historie.

Díky za každou radu
PerToon
Profil
window.setTimeout("window.close()", 1000);

Zavře okno za 1000 milisekund.
Myslím.
janek
Profil
To mi nějako nechodí. Nemusí se do toho window.close() zadávat ještě nějaký parametry?
Dero
Profil
http://webmaster.lycos.co.uk/tips/987600817/
janek
Profil
Ať dělám, co dělám Dero, tohle mi taky nejede. Ale díky za typ.
habendorf
Profil
janek: pomocí window.close lze v pohodě zavřít jen okno, které jsi předtím otevřel pomocí window.open. Jinak to háže confirmační hlášku.
setTimeout("window.close()", 1000); musí fungovat.
janek
Profil
Zajímavý, já myslel, že by právě tato funkce mohla mnoha lidem prospět. Stále mnoho lidí třeba v podnicích se např. připojují k webu pomocí proxy-serveru, byť je to způsob značně překonaný. Některé proxy však mají nebo umožňují vlastní cache, která ovšem často nepracuje jak má. To má za následek např. to, že vrátí stránku v podobě, ve které již není platná: Vysvětlím: Např. Uživatel 1 nakupuje na stránce nějakého internetového obchodu. Ty jsou většinou dělané pomocí proměnných Session. Uživatel 1 ukončí nákup, proměnné Session jsou rozbity a uživatel 1 přejde řekněme na seznam.cz, ovšem zapomene dále zavřít okno. Nyní opustí uživatel 1 PC a ke stejnému PC usedne uživatel 2. Uživatel 2 popstupným klikáním na tlačítko zpět prohlížeče přejde na stránku, kde předtím existovali proměnné Session. Za normálních okolností, pokud by byl připojen přímo, mu napíše stránka chybovou hlášku, že např. přístup nemůže být povolen - jenže stránka je ve své původní podobě načtená v cache proxy. Co se stane, když cache proxy přiřadí prohlížeči tu stránku která je ještě uložena v paměti místního serveru? Uživatel 2 může například jednoduše prohlížet, co uživatel 1 nakupoval. Může takto ale i např. prohlížet jeho e-maily apod. Tento fakt mnoho lidí opomíjí. Pak jsou tací, kteří jednoduše na poslední stránku napíšou: "Toto okno zavřete". Taky jsem viděl na stránkách jedné nejmenované vysoké školy, že mám po ukončení restartovat počítač :-D Říkám si ale, proč jednoduše občasnou zapomnětlivost uživatele 1 nenahradit scriptem, který by prostě sám okno zavřel? Já jsem bohužel jen amatér, ale copak Vy na to nemáte někdo nějakou fintu?
habendorf
Profil
No jak píšu, window.close můžeš použít, ale hodí to potvrzovací hlášku (v IE něco jako "Webová stránka kterou prohlížíte se pokouší zavřít okno prohlížeče - ano x ne?" Takhle to je např. u netbankingu ČS.
janek
Profil
habendorf:Ale s window.open() se mi vždy otvírá (možná to dělám blbě) stránka, na kterou se chci přepnout, v novém okně - přičemž ta stará (ve které je zadán příkaz window.open) se nezavře. Zůstane na ní historie a vůbec všechno, takže to můj problém neřeší. Já potřebuji buď novou stránku bez historie a nebo okno zavřít.
habendorf
Profil
Hele, nějak si nerozumíme.
Chceš zavřít normální stránku nebo nové okno?
janek
Profil
Když to funkuje u netbankingu ČS, tak to dělám asi blbě. Ale jak s window.open() teda otevřít stránku tak, aby nebyla jako "druhé" okno?
janek
Profil
Normální stránku.
janek
Profil
Ale window.open mi otevře novou stránku. Už mi rozumíš?
Fred
Profil
Zkusil bych spíš onunload location.replace

variaci na tohle
<A HREF="next.asp" onclick="javascript:location.replace(this.href); event.returnValue=false; event.cancelBubble=true;">
Click here to navigate to the next page without adding the current page to the history stack.
</A>

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnweb team/html/webteam07032000.asp
habendorf
Profil
Ale window.open mi otevře novou stránku.
No tomu rozumím, k tomu window.open slouží :o)

A proč otvíráš nové okno?
habendorf
Profil
Myslel jsem že chceš naopak zavřít to staré.
janek
Profil
Frede:To je skvělý, ale funguje mi to jen v exploreru. Firefox vesele zobrazuje historii dál.
janek
Profil
Opera mi zase nezobrazí pouze a jen tu stránku, ve které byl použit daný link. Automaticky mě ale přepne na stránku před ní.
janek
Profil
Myslel jsem že chceš naopak zavřít to staré.
No jasně že chci zavřít to staré! Ale jak jsi mi psal, to jde zavřít v pohodě pomocí window.close jen pokud jsem ho otevřel pomocí window.open.
habendorf
Profil
No zavřeš i to staré, ale hodí to tu hlášku.
janek
Profil
Dero: Ten <BODY OnLoad='compt=setTimeout("self.close();",5000)'> mi nakonec funguje v Opeře a v exploreru, ale ne ve Firefoxu (javascript mám povolen ve všech prohlížečích, pro jistotu jsem se ještě díval)
janek
Profil
habendorf: Ta hláška je samozřejmě nepříjemná, ale možná že to alespoň uživatele k činu. Jenže nevím proč, ve firefoxu mi to taky nejede. Už jsem kvůli tomu i přeinstaloval JRE, ale Firefox je prostě neoblomný. Přitom nastavení Javascriptu ve Firefoxu mám v pořádku a kromě toho jiné události javascriptu normálně fungují.
habendorf
Profil
Hm, koukám na to, Gecko na to fakt kašle.
janek
Profil
jojo, Firefox umožňuje zavřít javascriptem jen ta okna, která byla javascriptem otevřena. Takže pokud to nelze udělat jinak než javascriptem nebo použitím nějaké finty, je to prostě asi dost problém.
Leo
Profil
jak tak ctu kusy diskuze a dotazy tak to, co potrebujete vyresit je (ne)kesovani, ale s tim vam JS moc nepomuze a nova okna vas nespasi tuplem, Leo
Toto téma je uzamčeno. Odpověď nelze zaslat.

0