Asistent profilu a autocomplete

27. prosince 2002

V předchozím článku jsme vytvořili formulář, který dovede intuitivně nabízet do polí formuláře údaje z profilu uživatele. V tomto článku si ukážeme, jak využít na maximum možností takzvaného Asistenta profilu, který je k dispozici v prohlížeči Internet Explorer.

Ve formuláři z minulého dílu je skript, který dnes vytvoříme, přidán tímto zápisem:

<script type=“text/javascript“ src=“autocomplete.js“></script>

Tento skript doplní v prohlížeči, který podporuje přístup k VCards skriptem, tlačítko, kterým lze hodnoty vyplnit najednou. V současné době se tedy tlačítko objeví pouze v Internet Exploreru. Po jeho stisku se vyvolá asistent profilu, ten zobrazí uživateli údaje, které aplikace požaduje převzít. Uživatel může souhlasit, nebo může vybrat jen některé informace nebo může předání informací úplně odepřít. Asistent profilu tak zabezpečuje údaje uživatele. Ne každá aplikace totiž musí být tak ohleduplná a může požadovat údaje ihned po načtení stránky, nikoli tlačítkem jako je tomu zde – prohlédněte si ukázku.

Než se podíváme na obslužný skript, popíšeme si způsob práce s Asistentem profilu ve skriptu. Jde zde o nestandardní specifikaci firmy Microsoft, která zavedla objekt navigator.userProfile, pomocí kterého lze z profilu nejen číst, ale lze do něj i zapisovat. Stačí otestovat neexistenci uvedeného objektu. Pokud prohlížeč nepodporuje práci s asistentem profilu, pak se v naší aplikaci tlačítko pro vyplnění hodnotami z profilu vůbec neobjeví. K dispozici je těchto pět metod:

addReadRequest zařadí požadavek na přístup k VCard v profilu
clearRequest vyprázdní frontu požadavků
doReadRequest provede nashromážděné požadavky
getAttribute předá hodnotu VCard
setAttribute nastaví hodnotu VCard

Princip práce s profilem je následující. Pomocí metody addReadRequest zařazujeme požadavky na práci s určitou VCard. Každou položku, kterou chceme z profilu získat, musíme zařadit do fronty požadavků. Následně se požadavky provedou prostřednictvím doReadRequest, čímž máme k dispozici hodnoty VCard prostřednictvím metody getAttribute a hned je můžeme přiřazovat jako hodnoty jednotlivým políčkům ve formuláři. Vypisovat ovšem do skriptu pro každou aplikaci zvlášť jednotlivá políčka pro zadání požadavku a poté ještě jednou pro nastavení hodnot formuláře je jistě dosti nudné, když můžeme zapojit JavaScript, který se o vše postará sám. Následující skript je postaven tak, že projde celý formulář a pokud u některého textového pole najde atribut vcard_name, předá jeho hodnotu do fronty požadavků. Po provedení fronty opět projde celý formulář a políčka s uvedeným vcard_name naplní hodnotami z profilu uživatele. Nemusíme tak nutně nechat vyplňovat všechna pole z profilu. Jedinou podmínkou je, aby byl na stránce jen jeden formulář, nebo aby byl výše zmíněný formulář první, jinak je nutné skript přepsat.

var profile = navigator.userProfile;
if (profile) // existuje objekt, zobrazíme tlačítko
  document.write(‚<input type=“button“ onclick=“ReadProfile()“ value=“Adresář“ />‘);
function ReadProfile()
{
  profile.clearRequest(); // preventivně vyprázdnit frontu požadavků
  for (var i=0; i<document.forms[0].length; i++ )
  { // procházet všechny elementy formuláře
    with (document.forms[0].elements[i])
    {
      if (type==“text“ && typeof(vcard_name) != „undefined“)
      { // jde-li o textové políčko a je definováno vcard_name, zařadit do fronty požadavků
        profile.addReadRequest(vcard_name);
      }
    }
  }
  profile.doReadRequest(2,“Naše aplikace“); // provést nalezené požadavky
  for (var i=0; i<document.forms[0].length; i++ )
  { // procházet všechny elementy formuláře
    with (document.forms[0].elements[i])
    {
      if (type==“text“ && typeof(vcard_name) != „undefined“)
     { // jde-li o textové políčko a je definováno vcard_name, nastavit hodnotu pole formuláře údajem VCard z profilu
      value = profile.getAttribute(vcard_name);
      }
    }
  }
  profile.clearRequest(); // uklidit po sobě :)
}

Pro úplnost si ještě popíšeme hodnoty, s kterými lze volat provedení požadavků v Asistentu profilu: jak vidíme ve skriptu, doReadRequest má uvedeny nějaké parametry. Oba dva parametry slouží pro informaci, co aplikace s hodnotami z profilu zamýšlí provést a víceméně jde o nápovědné informace pro uživatele. Číslo udává účel použití údajů (viz následující tabulka), text v uvozovkách některé verze Asistenta profilu zobrazí uživateli jako informaci, kdo po něm jeho údaje chce (jak vidíme i na ukázkovém obrázku výše).

0 Slouží výhradně ke správě systému a systémových pravidel, například ke zjišťování problémů na serveru.
1 Slouží v vývoji a výzkumu produktu.
2 Slouží k dokončení aktuální transakce, například nákupu.
3 Slouží k úpravám obsahu a vzhledu serveru (personalizace obsahu).
4 Slouží k vylepšování obsahu serveru včetně reklam.
5 Slouží k odesílání aktualizací serveru.
6 Slouží k navázání kontaktu s uživatelem z důvodu nabízení služeb nebo výrobků.
7 Spojeno s dalšími informacemi o uživateli.
8 Využíváno serverem k jiným účelům.
9 Odhaleno ostatním z důvodu úprav nebo vylepšování obsahu a vzhledu serveru.
10 Odhaleno ostatním, kteří se na vás mohou obrátit z důvodu nabízení služeb nebo výrobků.
11 Jako bod 10, ale vázáno na povolení.
12 Odhaleno ostatním z libovolných důvodů.

Celou aplikaci si můžete stáhnout.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *