Sveiki, turiu dvi naujienas!
Pirma, paleidau super duper puslapiuką, skirtą dalintis mano kodais su jumis. Adresas: code.zuper.lt! Parašiau jam super-paprastutį template mechanizmą, kodo pavyzdžių surinkimo ir atvaizdavimo mechanizmą ir t.t. Taigi, jei netingėsiu kada paprograminti ką nors naudingo ar protingo, tai įdėsiu ten, o čia (bloge) turėtų atsirasti apie tai informuojantis įrašas.
Antra, pasižaidimui su JS ir DOM sukūriau “išlaidų skaičiuoklę”. Pamaniau, kad ji man, kaip ir nemažai kam, bus naudinga, nes retas išleisdamas pinigus kas savaitę, dieną ar mėnesio mąstu pasiskaičiuoja, kokia suma jam realiai susidaro ir ar jis gali sau per dieną leisti išleisti 5Lt cigaretėms ar kam kitam :)
Veikimo pavyzdys (su duomenimis) čia: nuoroda.
Beje, jeigu ką nors keičiate skaičiuoklėje, atitinkami pakeitimai yra padaromi ir puslapio adrese (adreso juostoje, viršuje). Taigi, norėdami svo išlaidų sąmata pasidalinti su kuo kitu, paprasčiausiai užpildykite lentelę, nusikopijuokite ilgą ir nepatogų adresą ir duokite tam, kas turėtų visa tai matyt. Vuolia!
Dabar šiek tiek apie patį JavaScript programavimą…
Buvau nusprendęs šį tūlsą parašyti visiškai “gryną” – t.y. nenaudojant jokių išorinių bibliotekų, o vien JavaScript. Taip ir buvau padaręs, kas puikiai veikė ant FF. Tačiau kai atėjo laikas išbandyti kodą ant IE – nieks nebeveikė. Tiksliau, veikė viskas gerai, jokių klaidų nemetė, bet… Išlindo didžiausias web programerio draugas – nesuderinamumas tarp naršyklių ;) Tai ir pagalvojau – kokio velnio man apeidinėti kažką, ką kiti jau 100 kartų apėjo? Tai ir pasirinkau vieną šaunu JS frameworką – prototypejs.
Problemų buvo gan įvairių:
- IE eventų nelaiko atributais, o matyt propertie. Taigi elm.setAttribute(‘onClick’, function() {…});.onclick = function() {…}; tikrai neveiks. Reikia anoniminę funkciją priskirti taip: elm. Bet pasirinkau “teisingiausią” kelią, ir klijavau funkcijas ant event-handlerių: Event.observe(elm, ‘click’, function(){…});.
- IE evento neperduoda kaip parametro. Jis slepiasi window namespace “event” vardu. Bet kadangi “window” yra defaultinis NS, tai galima kreiptis ir paprastai – event. Tskant kiekvienas tai žino, bet užkinisa rašyti kodą su IF’ais, reikalingais tik vienam šauniam brauzeriui.
- Kas veikia ant FFox, tas ne visada veikia ant IE. Sukeitus FF ir IE vietomis būtų dar baisesnė situacija :D Tad rekomenduoju programuoti ant tų naršyklių, kurios turi kaip įmanoma mažiau nestandartinių funkcijų, metodų ir objektų. Po to bus lengviau pritraukti prie cross-browseriškumo.
- Tokie mizeriai, kaip mini-CSS-fix’ai reikalingi IE ir FF suderinamumui. Tiesa, IE ant <select> objekto borderio neuždėjo, bet ir nebandžiau labai knistis. Pats kaltas.
Kita vertus, tų problemų buvo nedaug ir jos buvo nedidelės. Kodo nebandysiu ant IE6! Kaip Rolandas sakė – IE yra gaidys. Tačiau IE7 situaciją kiek pataisė. O IE8 iš viso žada spindėti dar labiau. Ir šaunu. Gal kode reikės rašyti mažiau if’ų…
Ir visgi, nemažai žmonių dar naršo su IE6. Ta proga reikės parašyti mini-toolsą, kuris praneša lankytojui, kad jis naudoja ne naršyklę, o gaidį, tad tegul atsinaujina ar, dar geriau, nueina teisigu keliu.
http://whyiesucks.blogspot.com/ :)))
IT, Verslas ir ekonomika, code
CSS, DOM, FF vs. IE, javascript, naujiena
Nauji komentarai