Autor Zpráva
ondra15
Profil
Chci se zeptat, jak docílím toho (zřejmě pomocí JS), když otevřu nové okno třeba pomocí window.open, aby zůstalo stále otevřené (focusované) i při kliknutí na jinou stránku než ze které bylo okno otevřené. Myslím, že by to šlo přes window.focus() , ale jak přesně netuším...

Předem díky
Petr ZZZ
Profil
Nové okno lze otevřít i bez JS, ale tak či onak se vnucování nového okna moc nedoporučuje a většinou je lepší nechat to na uživateli.
imploder
Profil
ondra15:
window.focus v DOM teoreticky umožňuje hlídat, jestli okno má fokus a pokud nemá (uživatel se přepnul jinam), tak mu ho přidělit. Hlídání, jestli má okno fokus je bez problému, přidělování fokusu ale funguje jenom v IE, a to hodně hloupým způsobem. Můžeš zkusit kód:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>javascriptové odchytávání fokusu okna prohlížeče</title>

<script type="text/javascript">
function ztratilo_fokus() {
  window.focus();
}
function sleduj_fokus() {  
  window.onblur = ztratilo_fokus; 
}
</script>
</head>

<body onload="sleduj_fokus()">
...
</body>
</html>


Ve Firefoxu to nic nedělá (ze zjevných důvodů - takové chování je za hranicí toho, co uživatel stránkám běžně dovolí), v IE to funguje, ale hodně hloupě - zablokuje to část ovládacích prvků prohlížeče - nejde pak např. psát URL, protože přesun kurzoru do políčka URL bere IE jako ztrátu fokusu okna. Doporučuju žádné okno "natvrdo" nedělat.
imploder
Profil
Je to taky skvělé na nasrání uživatele Safari (aspoň jeho windowsovské verze), který pak zamíří na stránku s neplatným certifikátem. Ukáže se dialog s otázkou, jestli pokračovat, a třemi tlačítky, ale ani na jedno z tlačítek ani na křížek se nedá kliknout, protože skript pořád běží a krade tomu dialogovému okýnku fokus. Nezbývá než Safari násilně ukončit ze správce úloh.

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:

0