ugrás a tartalomhoz

Diszkrét Javascript még egyszerűbben

Hojtsy Gábor · 2005. Jún. 26. (V), 09.11
A Weblabor hasábjain már sokat cikkeztünk a diszkrét Javascript technológiáról, melynek lényege, hogy a viselkedést megadó kódot a megjelenéstől és a tartalomtól különválasztva célszerű megadnunk, a későbbi karbantartást és a HTML-en dolgozók munkáját is megkönnyítve. Ben Nolan most egy behaviour-nek keresztelt technológiával állt elő, ami még könnyebbé teheti a diszkrét Javascript fejlesztői munkánkat.

Bár a behaviour az Internet Explorerben használatos megoldás neve, ezt az elnevezést választotta Ben is a saját ötletének elkeresztelésekor, és a két dolog nem ugyanazt takarja. Elképzelésének lényege, hogy a hagyományos DOM alapú keresésekkel, vagy a megfelelő osztálynévvel ellátott elemek kiemelésein alapuló megoldások helyett CSS kiválasztókat alkalmazhassunk a viselkedés hozzárendelésekhez. A kiválasztók feldolgozásához Simon Willison munkáját használta fel, és segítségével egy egyszerű tömbben megadott viselkedés hozzárendelési listával tudjuk oldalunkat dinamikus tulajdonságokkal ellátni.
 
1

MS okosság

Jano · 2005. Jún. 26. (V), 10.14
Lehet szidni a MS-ot, hogy nem tartja be a szabványokat és mindig saját megoldásokkal jön, de például a behavior ötletük nagyon jó irány volt. (Tegyük hozzá, hogy magát a CSS-t is MS találta ki.)

Ha már javascripttel kell nekünk CSS szerű kiválasztókat használni akkor lehet, hogy az IE7-nél alkalmazott módszert kéne preferálni. Tehát egy külső fájlt végig nézetni vele.

Egyébként a MS-féle behavior megoldásra van Mozillákhoz kompatibilis megoldás.
2

dicsőség?

gerzson · 2005. Jún. 26. (V), 10.31
Ne vegyük el másoktól sem a dicsőséget azért!

Stuart Langridge saját oldalán már publikált hasonló plugin jellegű megoldást 2003-ban. Itt is az ún. JSES szabályokat a JS tömb nélkül lehet megadni tovább egyszerűsítve a szintaxist, a JSES include ennek feldolgozását is elvégzi.

testing can reveal the presence of errors, but never their absence. - Edsger Dijkstra
3

nem támogatható mindenhol

Hojtsy Gábor · 2005. Jún. 26. (V), 10.49
Azért Stuart megoldását már ismertettük itt a Weblaboron, 2003-ban, és akkor is ismert volt, hogy a távoli fájl letöltést nem támogató böngészőkben az bizony nem megy, ez pedig még mindig elég nagy gondot okozhat. Ebben a hírben sem egy óriási újdonságról adunk hírt, hiszen a lényegi feldolgozó rész a kódban Simon Willison munkája, ami a kiválasztók használatát lehetővé teszi. Csak egy praktikus egyszerűsítésről van szó, ami mondjuk elkerüli a JSES hátrányait. Szerintem.
5

a távoli fájl

gerzson · 2005. Jún. 28. (K), 16.25
a távoli fájl letöltést nem támogató böngészőkben az bizony nem megy,
a JSES megoldásban hol jön elő a távoli fájl "intézménye", ami korlátoz? Erre gondolsz?
No remote hosting
The JSES sheet is retrieved by JavaScript, and therefore must be hosted on the same domain as the HTML page, owing to JavaScript's security restrictions.


Természetesen ez korlát, de vajon mennyire súlyos? Ezt nem látom át egészen.

testing can reveal the presence of errors, but never their absence. - Edsger Dijkstra
6

limitations

Hojtsy Gábor · 2005. Jún. 28. (K), 17.06
Olvasd el az általad linkelt oldalon a limitations fejléc alatti részt. Mindhárom korlátozás abból fakad, hogy külső fájlt tölt be.
7

OK, elolvastam. Az előző

gerzson · 2005. Jún. 28. (K), 17.26
OK, elolvastam. Az előző kommentem tárgytalan, csak épp a preview és a submit között eltelt kb. másfél óra.

exited.

testing can reveal the presence of errors, but never their absence. - Edsger Dijkstra
4

Na, ez már igen!

Anonymous · 2005. Jún. 26. (V), 11.48
Ez a módszert már tényleg lehet használni, és érdemes is, például nagyítható képeknél:

<img class="popupimage" src="/valami.jpg" width="100" height="50" alt="" title="" />
a javascript pedig:
var myrules = {
	'.popupimage' : function(element) {
		element.onclick = function() {
			var splitted = this.src.split("/");
			openImageWin(splitted[Number(splitted.length-1)])
		}
}
Behaviour.register(myrules);
Az openImageWin az persze egy saját függvény, ami a paraméterként megkapott képet jeleníti meg.

Gyulus