Autor Zpráva
Tonny
Profil *
Ahoj,
mám div a potřeboval bych zavolat funkci (napřiklad nastavení display: na none) ve chvíli, kdy uživatel klikne mimo tento div.

šlo by to řešit nějak bez pomoci jQuery? Neexistuje nějaká událost, něco jako onClickOut :D nebo tak něco? Na googlu jsem nic podobného nenašel.

Díky moc za rady ;)
Joker
Profil
Tonny:
U inputů to jde, tam jsou události onfocus a onblur, ale u <div>u se myslím nepočítá se zaměřením prvku a opuštěním prvku.

Takže asi leda odchytávat událost onclick na celé stránce a rozhodnout se podle toho, který prvek tu událost vyvolal.
Případně tady je řešení spočívající v tom, že klik kamkoliv na stránku provede akci jako klik mimo prvek a na klik na prvek je pověšená funkce, která tu událost kliknutí pohltí (zastaví šíření události DOMem).
nemeja
Profil
<!doctype html>
<title>Klikací pozadí</title>
<style type="text/css">
a.klikaci{
    display: block;
    width: 100%;
    height: 100%;
    position: fixed;
    z-index: 1;
    background: black;
}
div#neklikat{
    width: 50%;
    height: 50%;
    position: fixed;
    top: 25%;
    left: 25%;
    z-index: 2;
    background: white;
}
</style>
<!-- void(0) tam musí být, jinak se stránka přesměruje -->
<a href="javascript:document.getElementById('neklikat').style.background='red';void(0);" class="klikaci" title="Nastavení pozadí na červeno"></a> 
<div id="neklikat">
    Lorem Ipsum
</div>
Tohle používám já, na tu barvu mám samozřejmě pak funkci, ale pro zjednodušení jsem to napsal do řádku.
Chamurappi
Profil
Reaguji na Jokera:
U inputů to jde, tam jsou události onfocus a onblur, ale u <div>u se myslím nepočítá se zaměřením prvku a opuštěním prvku.
Pokud má nastavený tabindex, tak ano. Výhoda onbluru je, že se vyvolá i v případě, kdy člověk klikne úplně mimo prohlížeč.
nemeja
Profil
Chamurappi:
Výhoda onbluru je, že se vyvolá i v případě, kdy člověk klikne úplně mimo prohlížeč.
V tomhle případě spíš nevýhoda ne? Nechtěl bych, aby se mi zavřela právě prohlížená galerie(A podle dotazu soudím, že se jedná o něco ve stylu lightboxu), pokud bych překliknul třeba na skype.
_es
Profil
Chamurappi:
Výhoda onbluru je, že se vyvolá i v případě, kdy člověk klikne úplně mimo prohlížeč.
Asi to nebude celkom zaručené správanie vo všetkých prehliadačoch.
1Pupik1989
Profil
Já si v js vyberu element. poté pověsím událost na body. Pak už jen porovnávám target s vybraným elementem.
Chamurappi
Profil
Reaguji na nemeju:
podle dotazu soudím, že se jedná o něco ve stylu lightboxu
Já jsem si představil nějakou rozklikávací věc, třeba kalendář nebo imitaci <select>u. Kdyby dělal lightbox s překrývající průsvitnou vrstvou, patrně by ho napadlo chytat kliknutí na tu vrstvu.


Reaguji na _es:
Moc důkladně jsem to nezkoumal. Znáš nějaký prohlížeč, kde to neplatí? Živá ukázka.
shaggy
Profil
Chamurappi:
Znáš nějaký prohlížeč, kde to neplatí?
Napr. v Opera 12.11 to tak nefunguje. A napr. v najnovšom Firefoxe som klikol zmenšil okno, klikol na inú aplikáciu v pozadí a tiež to nestratilo focus (ale v iných prípadoch to fungovalo).
_es
Profil
Chamurappi:
Vo Firefoxe to ani pri prepínaní medzi „kartami“ nejako nefunguje.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: