ugrás a tartalomhoz

A WHAT csoport hozzászólásokat vár a Web Forms 2.0-hoz

Bártházi András · 2004. Dec. 15. (Sze), 19.25
November 10-n megjelent a második stabil munkavázlata a Web Forms 2.0 specifikációnak. Kezd kialakulni a specifikáció végleges formája, így - valószínűleg utoljára a "megjelenés" előtt - hozzászólásokat várnak. A Web Forms 2.0 új input mező típusokkal (dátum, időpont, e-mail cím, szám), kliens oldali validálás lehetőségével, input mezők kötelezőségének jelölhetőségével, ismételhető beviteli mezőkkel és az űrlapok elküldése feletti kontrollal egészíti ki a HTML 4.01 és XHTML 1.0 W3C ajánlásokat. Egy viszonylag hosszú bemutatás következik.

A WHAT munkacsoportot a webböngésző gyártók alapították az érdeklődők bevonásával. Célja olyan új technológiák kifejlesztése, melyek a fejlesztők számára lehetővé teszik webes alkalmazások létrehozását. A munkacsoportot indulásakor a W3C nem fogadta be, így jelenleg attól függetlenül tevékenykedik (bár számos W3C munkatárs is dolgozik a csoportban) - bízva abban, hogy a kidolgozott ajánlás a későbbiekben W3C ajánlás is lesz. A tervezés egy nyílt levelezőlistán folyik. Nagyon fontos szempont, hogy a cél olyan új funkciók, tulajdonságok, stb. kialakítása, melyek visszafele kompatibilisek a jelenlegi HTML és XHTML verziókkal.

A webes alkalmazások fogalom alatt a munkacsoport nem 3 dimenziós, irodai vagy grafikai programok készítését érti, hanem olyanokat, melyeket ma az eBay, vagy az Amazon kínál (azaz áruházak, rendelések, űrlapok, stb. kitöltését végző alkalmazásokat). A webes alkalmazások jelenleg is lehetségesek. A csoport célja ezen alkalmazások létrehozásának sokkal egyszerűbbé tétele, s sokkal szebb megoldása komplex Javascriptek, szerver oldali megoldások létrehozása nélkül, egy sokkal rugalmasabb felhasználói felületet létrehozva.

A Web Forms 2 egy része a WHAT WG munkájának, emellett még a Web Applications és Web Controls kidolgozása is folyik.

A Web Applications céljai:
  • natív popup és helyzetérzékeny menük lehetősége
  • dialógus ablakok, eszköztárak létrehozása, melyek az eredeti dokumentumban, s nem szeparáltan foglalhatnak helyet
  • parancsok és állapotok lehetősége: egy menüből, helyzetérzékeny menüből, gombról elérhető parancsok egy helyről történő letiltásának, engedélyezésének lehetősége, állapotok nyilvántartása és több helyen megjelenítése
  • szerver oldali események: DOM3 események kiváltásának lehetősége szerver oldalról
  • kliens-szerver kommunikáció lehetősége, melyek nem kívánják meg az újratöltését az oldalnak, kérésre történő adatfogadás, távoli eljáráshívások lehetősége (a Javascript hívja meg és fogadja az eredményét egy szerver oldali programnak)
  • További eszközfüggetlen DOM események: egy gomb és egy link, egér és billentyűvel történő megnyomásának megkülönböztetése
  • Rendezhető és többoszlopos fa és lista nézetek formázási lehetőségekkel
  • Személyre szabott elemek létrehozása egyszerűen
  • Formázott szöveg szerkesztésének lehetősége (WYSIWYG editor), a kurzor helyzetének manipulálása
  • Egyszerű, előre beállított tulajdonságokkal rendelkező HTML szerkesztő az előző alapjain
  • Húzd és ejtsd API lehetőségek
  • Szöveg választását és manipulálását lehetővé tevő API-k
  • Vágólap kezelését (biztonságosan) megoldó API-k
A Web Controls specifikáció jelenleg nincsen aktívan fejlesztve, azokat a funkciókat fogja tartalmazni, melyek a másik két dokumentumból valamilyen ok miatt kiszorulnak. Célja olyan lehetőségek definiálása, melyek jobbá teszik a webes interfészt, több lehetőséget kínálnak.

A Web Forms 2, mely jelen hírünk tárgya, számos érdekességet kínál, a következőkben ezekből mutatok be néhányat.

A specifikáció gyakorlatilag új HTML tulajdonságokat, eseményeket és függvényeket definiál. Ezek egyike az új beviteli mező típusokat lehetővé tevő type tulajdonság. Erre jelenleg is van példa, a type értéke lehet password, file vagy akár button (és még pár további). Ezek az értékek egészülnek ki, például:

<label>E-mail cím: <input type="email" name="addr"></label>
<label>Indulási dátum: <input type="date" name="start"></label>
Egy további lehetőség beviteli mezők szükségességének jelzése. Erre egy required tulajdonság került bevezetésre a input elemeknél, melyet egyszerűen a következőképpen használhatunk:

<label>Mennyiség: <input type="number" required="required" name="qty"></label>
Lehetőség van egyes típusok további specifikálására, például minimális és maximális értékek megadására:

<label>Meeting time: <input type="time" min="09:00" max="17:00" name="mt"></label>
Ezen értékek megadásakor a böngésző jelezheti a felhasználó felé, hogy pontosan hogyan kell kitölteni a mezőket, s ha hibásan tette meg, ezt is tudomására hozhatja. Olyan böngészőkben, melyek nem támogatják ezeket a tulajdonságokat, nem lesz semmi különbség érzékelhető a korábbiakhoz képest, viszont a fejlesztők kiegészíthetik ezen specifikációra épülő lehetőségekkel az űrlapokat, ha megfelelő Javascriptet írnak hozzá. Ez azért előnyös, mert egy közös platformot biztosít egymással kompatibilis programok létrehozására, írására.

A specifikáció új tulajdonságokat vezet be az objektum modellben is. A fejlesztők a következő kóddal egyszerűen lekérdezhetik, hogy egy egész űrlap jól lett-e kitöltve, s ha nem, egyből kezelhetik is a problémákat:

with (document.forms[0]) {
  if (qty.validity.isRequired) {
    // the quantity field is required but not filled in
  } else if (qty.validity.isTypeMismatch) {
    // the quantity field is filled in, but it is not a number
  }
}
A fejlesztők közvetlenül Javascriptből is helytelennek minősíthetnek egy mezőt, jelezve, hogy annak értéke nem elfogadható:

var myControl = document.forms[0].addr;
if (myControl.value == 'a##kukac##b.c') {
  myControl.setCustomValidity('You must enter your real address.');
}
Egy új eseménykezelő segítségével a böngésző hibakezelését is meg lehet kerülni. Ehhez a beviteli mezők oninvalid tulajdonságát használhatják majd a fejlesztők:

<label>Home page: <input type="uri" name="hp" required="required"
                         oninvalid="alert('You must enter a valid home page address.'); return false;">
</label>
További lehetőségek széles skálája áll majd a fejlesztők rendelkezésére a specifikáció szerint, melyek megvalósítására az alternatív böngészőkben (Mozilla, Firefox, Opera, Safari, Konqueror) nagyon nagy esély van, hiszen a böngészőgyártók állnak a funkciók kifejlesztésének hátterében. A további lehetőségekkel kapcsolatosan érdemes elolvasni a specifikáció aktuális állapotát, továbbá részt venni a levelezőlisták munkájában. Hozzászólni is érdemes, ki tudja, kinek lehet olyan meglátása, mely a jövőben mindannyiunk életét könnyebbé teheti?
 
1

Szerveroldal!

kgyt · 2004. Dec. 16. (Cs), 14.35
Ezek a lehetőségek csak a kliens oldali munkát könnyítik meg, ellenben a cikk szerveroldali könnyítést is említ.
Mivel a böngészőprogramok azonosítója (UserAgent) hamisítható, nem lehetünk 100%-osan biztosak a jól kitöltött űrlapadatok érkezésében, mindenképpen meg kell vizsgálni a szabványok bevezetése után is a különböző adatokat szerveroldalon!
Vegyünk például egy e-mail címet. Mi van akkor, ha a speciális böngészőmben kiiktatom az e-mail validáló részt, és a böngésző azonosítását beállítom egy validálós böngészőére (pl. Firefox 8.4-re - mert mondjuk abban vezetik be az e-mail validáló elemet)?
Beírok egy e-mail címet: "joska; rm -igenmindenre; runnemkivántparancs", szerver oldalon meg bízva a valid e-mail címben lefuttatok egy parancsot:
`mailkuldoprogi $_POST[email] $_POST[text]`
Jaj, a szerver összeomlott... ;-)
Szóval szerintem ez maximum a kliens oldali programozás és interfészkezelés megkönnyítésére lehet eszköz, a szerver olali adatkezelést nem helyettesítheti.

--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
2

Egységes leírás

Hojtsy Gábor · 2004. Dec. 16. (Cs), 16.06
Igazad van. Annyiban könnyítheti a szerver oldali hibaellenőrzést, hogy úgyis van egy leírásod az adatok helyes formájáról (legalábbis azokról a megkötésekről, amiket az új HTML kiegészítések támogatnak), és ezt egyszerűbb alkalmazni szerver oldalon is. Mondjuk a szerver oldali ellenőrzőkódod is felhasználhatja azt, amiből a HTML-t generáltad. Ez most is lehetséges, de a kliens oldal egyszerűbb generálásával megjöhet sokak kedve a szerver oldali ellenőrzés javításához is.
3

felhasznalobarat

Jano · 2004. Dec. 16. (Cs), 16.50
Gondolom nem elso sorban a biztonsag, hanem a felhasznalobaratsag volt a cel.

Szerver oldalon eddig is ellenorizni kellett ezutan is kell. Ezek a form eszkozok viszont kenyelmesebe, egyertelmubbe teszik a falhsznalonak mit es hogyan kell beirnia. Lerovidul a hibas bemeneti adatok miatti ujra kitoltes, javitas ideje. Stb.
5

Természetesen.

kgyt · 2004. Dec. 16. (Cs), 19.18
--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
4

Szerver oldal is

Bártházi András · 2004. Dec. 16. (Cs), 18.40
A hír egyáltalán nem akarta sugalni, hogy szerver oldali ellenőrzés nem kell. Kell. Ha így értetted, rosszul fogalmaztam.

Egyébként SZVSZ Firefox az 1.2-es verzió környékén már támogatni fogja ezeket. Amint végleges lesz a specifikáció, nem telik bele 1-2 hónap, s meg fogják csinálni. Szerintem. Persze lehet könnyen, hogy nem.

Amire ezek az újdonságok jók lesznek, hogy
  • admin felületet megvalósító oldalon nem kell annyit szenvedni a kliens oldali validáció scriptelésével.
  • bárhol az interneten elég lehet egy darab .htc fájl betöltése, s működni fog az oldal.
Egy egységes, széles körben elfogadott jelölést fog jelenteni, s nem mindenki kitalál húszfajta validáló Javascriptet, hanem ír egy olyat, ami ezek alapján a tulajdonságok alapján működik. Aztán ez is elterjed úgy, mint a CSS, és szépen lehet használni bárhol, bármikor, JS támogatás nélkül is, egyszerűen, nagyszerűen. De azt is mondhatod, hogy te nem szeretnél kliens oldali validációt megvalósítani, de azért ezeket a tulajdonságokat beállítod, aztán vagy lesz a felhasználónak ilyen, vagy nem. Ezért nagyon jó.

-boogie-
6

Így már...

kgyt · 2004. Dec. 16. (Cs), 19.20
egyetértek.

--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
7

Nem ugy van

sajt · 2004. Dec. 18. (Szo), 13.32
rm * -R -igen mindenre :)
8

Nem akartam jól használható ötleteket adni...

kgyt · 2004. Dec. 21. (K), 11.13
csak jelzés volt, hogy törölgetünk ám...

--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu