Otevření nového okna

Příkaz window.open()

Příklad:

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. 

Syntaxe: 

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).

Využití

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(...)">