Otevření nového okna

Příkaz window.open()

Příklad:

window.open("http://dusan.pc-slany.cz/internet", "_blank", "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. 

Jiný příklad:

window.open("index.html", "nove", "width=800,height=600,menubar=yes,resizable=yes,left=0,top=0")

otevře velké nové okno (800x600), které bude přilepené do levého horního růžku obrazovky (left=0, top=0). V okně bude načtena hlavní stránka (index) ze stejného adresáře. Okno se jmenuje "nove", což se dá použít pro případné odkazy (target=nove).

Syntaxe: 

window.open("URL", "jmeno_ramu", "volba=hodnota,volba2=hodnota2")

Při zápisu pozor na čárky a uvozovky -- 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
fullscreen okno bude přes celou obrazovku (fakt přes celou) bez hodnoty

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

Nejčastější chyba

Spočítejte si dobře parametry příkazu window.open. Jsou tři. Když tam napíšete 4 nebo víc, nebude to fungovat. Např. window.open("adresa","ram","parametry","jiné parametry"), tak je to špatně, protože správně to má být window.open("adresa","ram","parametry , jiné parametry")

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

Reklamní pop-up

Otevření nového okna s reklamou se říká pop-up. Je to jeden z nejnenáviděnějších reklamních formátů. Dejme tomu, že do budu načítat stránku reklama.html ze serveru reklama.net.

<script>
window.open("http://www.reklama.net/reklama.html", "_blank", "width=250,height=250");
</script
>

To je jaksi celé. Při natahování stránky vyskočí pop-up okénko samo o sobě (protože je voláno přímo ze <script>), která má standardní rozměry pop-up reklamy 250x250. Mimochodem, jedná se o nejméně účinný typ reklamy, protože takové okénko hned všichni zavírají.

Příklad s metodou window.open vizte např. u metod focus() a blur()

Píše Yuhů
dusan@pc-slany.cz
mail formulářem
Jak psát web O tvorbě, údržbě a zlepšování internetových stránek.

Základy HTML CSS FrontPage JavaScript

Javascript

Úvod

Základy

První skript v HTML

Proměnné

Hlášky

Začlenění do stránky

Praktické použití

Syntaxe

Základy syntaxe

Operátory

Větvení

Funkce

Objektový model

Objektový model

Objekt window

Metody objektu window

Objekt event

Časování, intervaly

Objekt document

Adresování prvků dokumentu

Objekt String

Zabudované funkce

Události

Použití objektů

Nové okno

Zrušení odesílání formuláře

Hledání


Rozšířené

JavaScript na serveru Jak psát web http://dusan.pc-slany.cz/internet/html/

Píše Yuhů: autorova stránka, mail: dusan@pc-slany.cz