Autor | Zpráva | ||
---|---|---|---|
janek Profil |
#1 · Zasláno: 10. 8. 2005, 13:27:42
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 |
#2 · Zasláno: 10. 8. 2005, 13:49:37
window.setTimeout("window.close()", 1000);
Zavře okno za 1000 milisekund. Myslím. |
||
janek Profil |
#3 · Zasláno: 10. 8. 2005, 14:29:47
To mi nějako nechodí. Nemusí se do toho window.close() zadávat ještě nějaký parametry?
|
||
Dero Profil |
#4 · Zasláno: 10. 8. 2005, 14:33:00
|
||
janek Profil |
#5 · Zasláno: 10. 8. 2005, 15:51:33 · Upravil/a: janek
Ať dělám, co dělám Dero, tohle mi taky nejede. Ale díky za typ.
|
||
habendorf Profil |
#6 · Zasláno: 10. 8. 2005, 16:00:23 · Upravil/a: habendorf
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 |
#7 · Zasláno: 10. 8. 2005, 16:22:52
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 |
#8 · Zasláno: 10. 8. 2005, 16:27:33
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 |
#9 · Zasláno: 10. 8. 2005, 16:33:14
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 |
#10 · Zasláno: 10. 8. 2005, 16:36:40
Hele, nějak si nerozumíme.
Chceš zavřít normální stránku nebo nové okno? |
||
janek Profil |
#11 · Zasláno: 10. 8. 2005, 16:37:03
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 |
#12 · Zasláno: 10. 8. 2005, 16:37:42
Normální stránku.
|
||
janek Profil |
#13 · Zasláno: 10. 8. 2005, 16:38:37
Ale window.open mi otevře novou stránku. Už mi rozumíš?
|
||
Fred Profil |
#14 · Zasláno: 10. 8. 2005, 16:40:07
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 |
#15 · Zasláno: 10. 8. 2005, 16:40:42
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 |
#16 · Zasláno: 10. 8. 2005, 16:41:15
Myslel jsem že chceš naopak zavřít to staré.
|
||
janek Profil |
#17 · Zasláno: 10. 8. 2005, 16:46:37
Frede:To je skvělý, ale funguje mi to jen v exploreru. Firefox vesele zobrazuje historii dál.
|
||
janek Profil |
#18 · Zasláno: 10. 8. 2005, 16:49:13 · Upravil/a: janek
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 |
#19 · Zasláno: 10. 8. 2005, 16:54:28
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 |
#20 · Zasláno: 10. 8. 2005, 17:00:48
No zavřeš i to staré, ale hodí to tu hlášku.
|
||
janek Profil |
#21 · Zasláno: 10. 8. 2005, 17:12:49
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 |
#22 · Zasláno: 10. 8. 2005, 17:30:49
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 |
#23 · Zasláno: 10. 8. 2005, 18:42:14
Hm, koukám na to, Gecko na to fakt kašle.
|
||
janek Profil |
#24 · Zasláno: 10. 8. 2005, 20:03:13
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 |
#25 · Zasláno: 10. 8. 2005, 20:07:26
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
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0