Příkaz window.open()
window.open("http://dusan.pc-slany.cz/internet",
"ram1", "width=400,height=500")
otevře zadanou stránku v novém okně, které nebude mít žádné lišty nebo panely, přičemž bude mít velikost 400 x 500 a nepůjde roztáhnout.
window.open("URL", "jmeno_ramu", "volba=hodnota,volba2=hodnota2")
Při zápisu pozor na uvozovky -- jsou tam potřeba (mohou se nahradit apostrofy). URL se zadává normálně http://... nebo relativní. Jméno rámu se dá později použít pro zacílení případných odkazů pomocí target.
Volby jsou nepovinné. Oddělují se čárkou bez mezery (!) a týkají se většinou zobrazení různých částí okna:
Volba | Význam | Hodnoty |
---|---|---|
toolbar | panel nástrojů (zpět, vpřed...) | yes | no |
location | vstupní pole adresy | yes | no |
directories | divný panel odkazů | yes | no |
status | stavový řádek (dole) | yes | no |
menubar | nabídka (soubor, úpravy...) | yes | no |
scrollbars | rolovací lišty (umožňující posun) | yes | no |
resizable | možnost změny velikosti okna | yes | no |
width | šířka okna v pixelech | pixely |
height | délka okna v pixelech | pixely |
left | vzdálenost levého okraje od okraje obrazovky | pixely |
top | vzdálenost horního okraje od vršku obrazovky | pixely |
Namísto yes | no lze zadávat hodnoty 1 | 0. Pokud se uvede volba bez hodnoty, chápe se jako yes, pokud se volba neobjeví, chápe se jako no.
Z toho vyplývají i hodnoty voleb, pokud nejsou uvedeny. Všechny volby jsou rovny yes, pokud se volby vůbec nezadávají (tzn příkaz nemá třetí parametr). Pokud se ale volby zadávají (třeba i řetězcem ""), všechny neuvedené jsou rovny no.
Příklad: window.open("http://www.redbox.cz", "redbox_ram", "location=yes,status=no,width=600,height=500,resizable")
otevře nové okno 600 x 500 s Redboxem, bude vidět adresa, nebude zobrazena stavová lišta a okno bude rozšiřitelné. Po obsahu ale nepůjde rolovat, protože není uvedena volba scrollbars.
Neuvedou-li se rozměry okna, velikost je stejná jako u nových oken (otevřených příkazem Otevřít v novém okně).
window.open("http://seznam.cz") zobrazí Seznam v novém okně, které bude úplně normálním oknem prohlížeče (protože volby nejsou vůbec vypisované, a tak jsou chápány jako yes).
Pokud se použije zápis nove_okno = window.open(...)
, dá se
potom s oknem manipulovat s použitím proměnné nove_okno (to jen pro vyspělé
skriptovače).
Osobně mám příkaz window.open nerad, ale chápu, že jej někteří autoři potřebují. Nejčastěji se otevření nového okna váže k nějakému odkazu <a> a události kliknutí onclick.
<a href="stranka.html" onclick="window.open('stranka.html');
return false">
Odkaz normálně míří na stránku stranka.html, ale při kliknutí se
stranka.html otevře v novém malém okně. Protože by se normálně stránka
načetla i do aktuálního okna (což dejme tomu nechceme, proč ji totiž
zobrazovat dvakrát?), je třeba k onclick
doplnit o return
false
, což způsobí, že se vlastní odkaz nespustí (jako bychom
nakonec řekli: kliknuto = nebylo).
Dost často se otevírání nového okna používá na nějakou stránku s doplňujícími událostmi nebo pro zobrazení reklamy. Tam se samozřejmě nemusí dávat return false.
Příkaz otevření nového okna můžeme navázat na libovolnou událost libovolného prvku, v praxi je ale třeba používat události jenom u odkazů (odesílacích tlačítek a několika málo dalších elementů), protože starší prohlížeče (třeba Netscape 4) u jiných elementů neumí události spouštět.
Proto se častěji otevírání nového okna zapisuje jako skript přímo do proudu dokumentu
<script>
>
window.open(...);
</script
nebo se váže na událost onload prvku body (načtení dokumentu):
<body onload="window.open(...)">