AcidLog je experiment. Nadesignuj a naprogramuj si ho podľa vlastných predstáv. viac »

Mozilla chystá novinku – zavedenie podpory propietárnej zbierky document.all. A začína okolo toho byť celkom humbug. Spúste ľudí to pripadá ako zrada ideálov, ústup pred nepriateľom, ale hlavne spústa potenciálnych problémov do budúcnosti. Ja mám však trochu iný názor.

Túto zbierku používa Internet Explorer a v dobe, kedy IE prevalcovalo Netscape Navigator a na webe prakticky neexistoval žiadny iný browser, ju začali kóderi vo veľkom používať bez toho, aby čo i len trochu popremýšľali nad nejakým ošetrením browserov ktoré to nepodporujú. Výsledkom je, že ešte v dnešnej dobe existuje obrovské množstvo webov, ktoré sú napísané natoľko debilne, že bez podpory tejto zbierky nebudú fungovať. Webov, ktoré bežný užívateľ chce navštíviť a použiť.

Pokiaľ na taký web príde v IE a Mozille, pričom v jednom mu bude fungovať a v druhom nie, myslíte, že bude vinu zvaľovať na toho debilného webdesignera? Nie. Bude pindať na Mozillu. Z tohto pohľadu je teda podpora document.all logický a jednoznačne správny krok, ktorý pomôže Mozille preklopiť sa z priehradky alternatíva do chlieviku mainstream. A – vážení kolegovia webdesigneri – to je predsa to čo chceme, nie?

Z kóderského pohľadu v tom tiež nevidím žiadny problém. Ozývajú sa hlasy, že zrazu nastane situácia, kedy detekcia IE pomocou testovania document.all prestane fungovať. Ehm, ehm… nechcem do nikoho rýpať, ale ak píšete kvalitné skripty, tak iste dobre viete, že sa v nich majú testovať použité metódy a objekty, nie použitý browser. Degradácia by mala smerovať zhora nadol a nie naopak. Správne napísaný skript (ktorý počíta aj s archaickými verziami IE) by mal čisto teoreticky vyzerať asi takto: if (document.getE­lementById) {//niečo} else if (document.all) {//niečo iné} else {//fakof}. V takomto prípade nevidím sebemenší problém.

Ďalšou drobnosťou, na ktorú sa tak trochu pozabúda, je fakt, že Mozilla nebude vracať true pri testovaní prítomnosti zbierky. Bude vracať iba výsledky pri použití danej zbierky. Takže konštrukcia if (document.all) {//IE} else {//Mozilla} ostáva naďalej funkčná a platná (aj keď podľa mňa zvrátená a blbá). Toto je podľa mňa potenciálny zdroj problémov. Lepšie povedané, dvojsečná zbraň. Prečo? Môžu nastať dva prípady:

  1. Človek čo písal skript je prasa, plne sa opiera o document.all a v tom prípade bude v novej Mozille všetko v pohodičke. Zbierka bude vracať to čo má a všetko bude fungovať (zjavne) tak ako má.
  2. Človek čo písal skript je dôkladné prasa a tak tam niekde šupne riadok asi v tomto znení: if (document.all) {//všetko v pohode} else {alert(„tvoj browser je na riť, použi IE“)}. A sme tam kde sme boli. V prdeli.

Takže aby som to zhrnul: Myslím si, že zavedenie podpory document.all do Mozilly je krok správnym smerom. Čo je super. Bohužiaľ, kvôli tomu aby sa umlčali negatívne ohlasy komunity webdesignerov, ktorí to nedomýšľajú do dôsledkov, to nie je plnohodnotný krok, ale iba také nejaké ukročenie približne správnym smerom. Čo je škoda.

Komentáre

no ja tiež súhlasím že zavedenie document.all pomože, a to že niekto písal scripty „ako prasa“, tak nech čelí následkom svojej roboty ;) netvrdím že ja som taký nebol a ešte i v niektorých prípadoch som. Ako však Riki naznačil, je to dvojsečná zbraň, tak uvidím aké + a – mi to prinesie :)

 

OCTOPUSS: Problém je v tom, že väčšinou ak niekto píše skripty ako prasa, je za to drbaný „alternatívny“ browser a nie autor skriptov.

 

Riki, v tom máš pravdu, ale, i browsre su niekedy na vine, ale v inom smere (OFF TOPIC : nekompatibilita s w3c, mam na mysli css)

 
Petr Tomeš 25 Aug, 13:25

CZilla o tomto chování připravila dokument. Doporučuji přečíst.

 

no ten dokument na czille, hlavne to prečo to zaviedli ma utvrdzuje, že to bol správny krok, tiež som bol niekedy začiatočníkom (a vlastne ešte i som ;) ) tak viem že by mi to v tých časoch značne ulahčlilo prácu, na druhej strane, takto som sa naučil pracovat podla možností „neprasácky“

 

Nechápem kde je problém. Funkčnosť mozille sa pridá a pritom žiadne problémy nevzniknú. Ideálne riešenie.

 

JOHNO: Potenciálne problémy som popísal v zápise.

 

FCZBKK: No to čo si popísal podľa mňa nie sú problémy. Ak niekto detekuje IE pomocou document.all tak sa pre neho nič nemení. Ak niekto používa document.all[‚xxx‘] tak sa pre neho tiež nič nemení. Teda mení – bude to fungovať aj v Mozille. Jediné riziko je v tom, že sú tu prasáci, ktorí odrežú návštevníka len preto lebo document.all vracia false. A pre nich sa tiež nič nemení lebo ostávajú prasákmi.

 

JOHNO: O to práve ide.

 

FCZBKK: No a čo potom tak strašne vadí tím webdesignerom na tomto kroku Mozilly?

 

JOHNO: Teraz už nič, ale keď sa tá zmena pripravovala, tak im tak strašne vadilo to, že pomocou document.all nebudú môcť detekovať IE. Práve kvôli tomu sa tá zbierka urobila nedetekovateľná a práve preto je tu problém s prasákmi ktorí browser bez document.all pošlú do prdele. Myslím, že to vôbec nemuselo byť, nebyť nepodloženého strachu (alebo zlými návykmi) webdesignerskej obce.

 

FCZBKK: Ahá. Jasné. Naozaj je tých webov čo orezávajú na základe document.all tak veľa? Stoja za to? Bežní užívatelia asi pozerajú iné stránky ako ja lebo ja som na takú už pekne dlho nenarazil.

 

johno, fczbkk Ak je web kvalitný myslím že na takomto rozšírení funkcionality nestroskotá

 

OCTUPUSS: Asi to celkom nechápeš. Stroskotať v Mozille kvôli tomu nič nemôže. Práve naopak. Je šanca, že tam budú fungovať aj tie menej kvalitné weby.

 

JOHNO : ja som to už napísal že to pomože, čítal som si to na czille. a ja nemám nič proti tomuto kroku. a ako fczbkk povedal detekcia browsra by sa mala robiť od spodu nahor a nie naopak, ten kto to robil takto naopak to bude mat lahšie.

 

JOHNO: Ber to tak, že človek ktorý sám robí weby automaticky navštevuje úplne iné weby ako ostatní užívatelia a vníma ich inak (napríklad chápe že chybové JS hlášky sú spôsobené blbosťou autora skriptu a nie jeho browseru – poväčšine „alternatívneho“). Takže v podstate jediná vec, ktorá mi na celej kauze vadí, je fakt, že v niektorých prípadoch bude laickým užívateľom Mozilly vyskakovať nejaká hláška o tom, že majú blbý browser, pričom chyba bude v blbom skripte. A hlavne ten skript ktorý takúto hlášku vyhodí, by aj tak fungoval (nebyť nedetekovateľnej zbierky).

 

Predpokladam ze to dopadne tak, ze vznikne aj alternativna verzia, ktora bude vracat true. Overi sa casom jej neskodnost a tym padom budu dalsie mainstream buildy vracat true… Pripadne sa to bude dat cez config nastavit a ludia si budu moct doinstalovat document.all == true pomocou nejakeho ‚Document.all pluginu‘ :)

 

FCZBKK: Čo keby document.all vracal true len v nestriktnom režime? Hnusná výnimka to je ale na prasákov treba ísť prasáckymi riešeniami.

 

JOHNO: Rozdielne správanie v Strict a Transitional režime tu už bolo. Ďakujem pekne. Ja chcem konzistentné riešenia.

 

Pridaj komentár

Komentáre môžu pridávať iba prihlásení užívatelia.