Vadí vám vlastnost funkce „autocomplete“, která zpřístupní např. citlivá data všem uživatelům jednoho počítače? Nezoufejte, máme pro vás elegantní řešení, jak ji efektivně zakázat. Návdavkem přidáme trochu JavaScriptu, který umožní přepínání mezi povolením a zakázáním zmíněné funkce.

Pokud má uživatel ve svém prohlížeči zapnutou funkci Autocomplete pro automatické doplňování hodnot do textových polí formulářů, můžeme tuto funkci potlačit. Pokud vytváříme určitým způsobem choulostivou aplikaci, kde není vhodné, aby se určité informace z formuláře mohli dozvědět i ostatní uživatelé téhož počítače, pro dané vstupní pole funkci autocomplete zakážeme. Je otázka, zda aplikace se zapnutou funkcí autocomplete, která navíc sbírá citlivá data, není v rozporu se zákonem na ochranu osobních údajů. Zmíněná data totiž mohou být vyzrazena.

Zkuste například v internetové kavárně vstoupit do nějakého chatu, určitě budete překvapeni, kolik pikantností na vás vyskočí, když se pokusíte psát text do pole pro zprávu. Přitom zakázání docílíme jednoduchým uvedením parametru autocomplete a nastavením jeho hodnoty na off.

<input type="text" name="message" autocomplete="off">

Výchozí hodnota je „on“, tuto není třeba uvádět. Naopak zapnutí funkce autocomplete uvedením hodnoty on není možné, pokud ji uživatel ve svém prohlížeči nemá aktivovanou. Můžeme ale pomocí JavaScriptu místo trvalého vypnutí nabídnout dočasné zapnutí – funkci si může uživatel dle potřeby zapnout. Ten, kdo nesdílí PC s jinými uživateli, tak má možnost ponechat funkci aktivní a ušetřit si čas při vyplňování formuláře. Aby bylo ovládání skutečně komfortní, uložíme stav do cookie. Příklad si můžete prohlédnout i stáhnout.

K ukládání dat pomocí Javascriptu využijeme funkci pro práci s cookies, jak je použita v článku Sledování počtu návštěv V příkladu jsem ji vyňal do externího souboru cookies.js.

<html>
<head><title>Autokompletace</title></head>
<body>
<form name="form1">
<input type="Text" name="message" autocomplete="off">
<!–[if IE]>
<script language="JavaScript" type="text/javascript" src="cookies.js"></script>
<script language="JavaScript" type="text/javascript">
function SwitchAuto() // přepíná stav umožnění autocomplete
{
 if (document.form1.message.getAttribute(‚autocomplete‘) == ‚off‘)
 { // pokud je potlačeno
   document.form1.message.setAttribute(‚autocomplete‘, ‚on‘); // přepnout na povoleno
   document.form1.sbutton.value = ‚Potlačit autocomplete‘; // změnit text tlačítka
   MyCookie.Write(‚autocomplete‘,’on‘, 365); // uložit do cookie
 }
 else
 { // pokud je umožněno
   document.form1.message.setAttribute(‚autocomplete‘, ‚off‘); // přepnout na potlačeno
   document.form1.sbutton.value = ‚Umožnit autocomplete‘; // změnit text tlačítka
   MyCookie.Write(‚autocomplete‘,’off‘, 365); // uložit do cookie
 }
}
function InitialAuto() // pokud je v cookie uložená hodnota on, změní výchozí stav off na on
{
 if (MyCookie.Read(‚autocomplete‘) == ‚on‘)
   SwitchAuto();
}
onload = InitialAuto; // po nahrání stránky inicializovat stav
</script>
<input id="sbutton" type="Button" value="Umožnit autocomplete" onClick="SwitchAuto();">
<![endif]–>
<input type="Submit" value="Odeslat">
</form></body></html>

V popisu ovládacího tlačítka je záměrně použito Umožnit/Potlačit namísto Povolit/Zakázat, jak bychom předpokládali. Je to proto, že nelze jednoduše zjistit, zda uživatel má automatické doplňování formulářů povoleno. Pokud nemá tuto funkci v prohlížeči zapnutou, nebude autocomplete funkční, ani když nastavíme autocomplete=“on“. Část s ovládacím skriptem a přepínacím tlačítkem je v podmíněném komentáři, takže bude aktivní jen v prohlížeči Internet Explorer a nebude tak způsobovat chyby a zmatení uživatele v jiných prohlížečích. Přepínání by bylo možné i pomocí obrázkového tlačítka a stav indikovat ikonkou, pro více políček by bylo potřeba skript rozšířit. Příklad ukazuje jednoduchou možnost a třeba pro chat je okamžitě použitelný.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

1 Příspěvěk v diskuzi

Odpovědět