href-es javascript alkalmazásának helyessége
Hello!
Már rongyosra olvastam a JS linkelésével kapcsolatos cikkeket és fórumokat, de még mindig nem találtam arra választ, hogy ha egy admin oldalon (ahová robotok nem jutnak be, illetve engedélyezve van mindig a böngészőben a JS) mennyire szerencsés használni az alábbi kódrészletet?(Az én alkalmazásomban egy végtelenül egyszerű szerepet tölt be a függvény: egy confirm ablakot tár a szemünk elé)
Köszönöm előre is a fejtágítást ;)
■ Már rongyosra olvastam a JS linkelésével kapcsolatos cikkeket és fórumokat, de még mindig nem találtam arra választ, hogy ha egy admin oldalon (ahová robotok nem jutnak be, illetve engedélyezve van mindig a böngészőben a JS) mennyire szerencsés használni az alábbi kódrészletet?
<a href="JavaScript:valami('egy',ketto','harom')">
Köszönöm előre is a fejtágítást ;)
Általánosságban
Nagy általánosságban kerülendő és erősen ellenjavallt az ilyenfajta Javascript beágyazás. A href nem erre van kitalálva, és az egész kód kezelhetőségét rontod, ha ilyenekt használsz.
Helyette javasolt inkább valamilyen JS framework használata, és ezzel a tiszta JS kódból hozzákötni a tiszta HTML kódhoz az eseményeket. Ha ezt a gyakorlatot követed, rá fogsz jönni, hogy nem csak szebb, sokkal kényelmesebb is ezt a módszert használnod.
Itt egy példa JQuery-vel (ezt le kell töltened):
elegánsabb és rövidebb is
Vagy akkor már inkább használjam az onclick-et?
Amúgy ha href="#" esetén confirm boxban cancel-t választasz, akkor felugrik az oldal tetejére... ezért is tetszett meg hirtelen a rusnya megoldás mert erre nyújtott volna orvosságot...
erdemes mindig a diszkret js
A fenti peldaban az
átadás
Nem is olyan rég pedig itt a fórumon ajánlották az onclick="valami();return false" alkalmazását felugrás ellen... akkor ez is teljesen elavult történet?
Olvastam már párszor a diszkrét js-ről, még itt a weblaboron is volt róla cikk, de igencsak félre értelmeztem... mert ugyan külön választottam a js-t és html-t de ez ahogy látom nem csak erről szól, hanem magából az egész html-ből ki kell hagyni az onclick és társait, ha most egyáltalán jól értelmezem...
Csak azt nem tudom, hogy js nélkül hogy csinálsz egy confirm boxot?
Béke!
Az adott linknek egyedi id-t adsz -például- és úgy éred el a diszkrét js-ből.
Nem, legjobb tudomásom szerint a diszkrét js függvényed is visszatérhet return false -al a végén, vagy ha jobban tetszik, akkor marad az e.preventDefault(). :-)
(<zárójel>: én nem tartom nagy profinak magamat - inkább jóképű vagyok :-) - de kb 5! éve használtam onclick -es js -t utoljára, úgyhogy hidd el, ez nem új dolog .-) </zárójel>)
Jól értelmezted! Js csak a javascript kódot tartalmazó fájlra mutató <script> tag kellene hogy legyen... Jquery -t merhetem ajánlani?
Mondjuk megcsinálod az oldalt csak (x)html és szerver oldali nyelvel (php?) A confirm boxod meg lehet egy form, ami megcsinálja ugyanazt a szerver oldalon, amit egyébként a kliensen szeretnél. És ha van javascript, akkor ez az egész nem így fog működni, hanem az adott link click -jét a diszkrét js ből felülírva megkapod a confirmboxot!
Üdv:
Gábor
Melyik bolygó? Eltévedtem! :D
Na ezt most "kicsit" nem értem. Szóval JS nékül csinálok egy formot ahova átdob a link ha rákattintok? Vagy felugrik a form pl egy div-ben, de ahoz már AJAX kellene nem? Vagy csak simán újratölti az oldalt és akkor egy átadott változóval pl ha checkform=1 akkor megjeleníti a checkformot?
Telefonál haza! :-)
Ez után rákötöd a javascriptet, és így a fent említett link már nem visz sehova, hanem hozza a javascript confirm boxodat (amit megcsinálsz a saját szád íze szerint, vagy használsz meglévőt)
Ez persze dupla munka, és 99.99% az esélye hogy az első rész sosem fog lefutni, mert a javascript engedélyezve van nagyrészt. Ha mégsem, akkor viszont ugyanúgy tudják használni a webalkalmazást és máris készítettél egy webalkalmazást, mely a graceful degradation elveit követi, és mindenkinek egy könnycsepp kicsordul a szeméből a meghatottságtól:-)
Üdv:
Gábor.
P.ZS.
Köszönöm a felhomályosítást!
;
igaz, csak...
Paraméter átadás
A másik hogy bármennyire is W3C szabványos a kódunk szintaktikailag és szemantikailag, nem változtat azon, hogy webalkalmazásról van szó, nem egy dokumentumról. Itt a HTML szerepe az, hogy leírja az UI vázát, nem pedig információ prezentálása. - Vagyis egy alkalmazás esetén nem igazán helytálló a "prezentáció elválasztása az információtól", mert egy egész más fogalomkörbe létünk át.
HTML5
Amúgy egy admin felületen majdnem tökmindegy. Miután elhelyezted az datokat (pl <strong data-tooltipszoveg="Hehe">),ezzel a jquery metódussal kérdezhetd le a tartalmát:
http://docs.jquery.com/Attributes/attr
Mellesleg a legtöbbször (pl linkek esetében) a szemantikus attribútumban tárolják az infót, és Így megtartják a szemantikát és keresőbarátabbá teszik az oldalt (linkek esetén). Pl:
<a href='ajaxcall.php' class='ajaxlink'>Ajax</a>
Valóban
Érdekes gondolat
Lehet, hogy nem értem pontosan mit értesz "webalkalmazás" alatt, de mi mást írna le a html struktúrád, mint valamilyen információt? Ha egy listát listaként prezentálsz, egy adtattáblát táblaként, szemantikus a dokumentumod.
Úgy értettem...
Persze lehet, hogy éppen adatokat jelenít meg az alkalmazásnk, de jelenleg nem tudok szabványról, ami a webalkalmazások elérhetőségét tűzte volna ki célul, akár robotok, akár gyengénlátók részére.
Vagyis jó cél az, hogy egy webalkamazás elérhető legyen a megszokott vizuális megjelenítő + javascript tartományon kívül is, de jelenleg ennek nincs realitása. Persze vannak technikák, amiket mimiálisan strukturált információ esetén alkalmazhatunk (a weboldalak 90%-a), de egy alkalmazás megfelelő leírására esélyünk sincs a jelenlegi eszkötárral.
irgum burgum!
Dehogy baj! Engem is érdekelnek ezek az eszmefuttatások... ;)
...amúgy is már föntebb megkaptam a magamét, információ tekintetében és különben is jó néha ilyen oldalról is megnézni a dolgokat.