Programiranje

7 kroničnih napak brskalnika, ki pestijo splet

Spletni brskalniki so neverjetni. Če ne bi bilo brskalnikov, se ne bi mogli skoraj tako dobro povezati z uporabniki in strankami, tako da bi svoje podatke in dokumente vlivali v njihova namizja, tablice in telefone. Žal nas vsa čudovita vsebina spletnega brskalnika naredi bolj frustrirane, če upodabljanje ni tako elegantno ali brez napak, kot bi si želeli.

Ko gre za razvoj spletnih strani, smo brskalnikom na milost in nemilost, saj smo jim dolžni. Vsaka napaka na kateri koli platformi skoči ven, še posebej, če sesuje stroje naših uporabnikov. In z oblikovanjem kot takšno premijo za izstopanje ali vgradnjo, vsaka maščobna črta ali napačno uporabljen dotik barve uniči estetsko izkušnjo, ki smo si jo prizadevali ustvariti. Tudi najmanjša napaka, kot je dodajanje dodatne slikovne pike širini črte ali malce poravnava tabele, lahko povzroči frustrirajočo uporabniško izkušnjo, da ne omenjamo stroškov odkrivanja, preverjanja in dela okoli nje.

Seveda je bilo včasih slabše. Velike razlike med brskalniki so bile v veliki meri izbrisane zaradi zavezanosti spletnim standardom W3C. Razlike, ki ostajajo, je na splošno mogoče prezreti, zahvaljujoč širjenju knjižnic, kot je jQuery, ki ne samo, da olajšajo vdiranje JavaScript, temveč tudi papir, kako brskalniki niso enaki.

Te knjižnice imajo navado zamrzniti napake brskalnika. Če podjetja brskalnikov odpravijo nekatere svoje najhujše napake, lahko novi popravki motijo ​​stare popravke in rešitve. Nenadoma "popravek" postane težava, ki moti staro stabilnost, ki smo jo napak nameščali okoli hrošča. Programerji ne morejo zmagati.

Stabilnost, ki jo prinašajo knjižnice, kot je jQuery, je tudi spodbudila graditelje brskalnikov, da pospešijo in avtomatizirajo svoje postopke posodabljanja brskalnika. Mozilla se zavzema, da bo vsakih nekaj mesecev iztisnila novo različico Firefoxa. V preteklosti bi bila vsaka različica stabilna tarča za spletne razvijalce, na naša spletna mesta pa bi lahko postavili malo GIF, ki trdi, da najbolje delujejo na primer v IE5. Zdaj se števec prevoženih kilometrov obrne tako hitro, da bo nova različica Firefoxa izdana v času, ko HTML traja od strežnika do odjemalca.

Medtem prosimo brskalnike, da storijo še veliko več. Spletno mesto mojega lokalnega časopisa postavi moj stroj na kolena - razširitev oglasov s popoverji, delčke videoposnetkov, ki se samodejno predvajajo, kodo za prilagajanje oglasov moji nedavni zgodovini brskanja. Če moja hči pogleda spletno mesto za lutke, JavaScript poskuša nenavadno najti oglas za lutko, ki bi mi ga prikazal. Vse to čarobno naredi procesor.

Vse to pomeni, da so današnje napake brskalnikov redkejše, vendar jih je težje odkriti. Tukaj je pogled na najnovejše zvrsti napak brskalnika, ki pestijo - ali v mnogih primerih preprosto nagajajo - spletne oblikovalce in razvijalce.

Postavitev

Najbolj vidne napake brskalnika so napake pri postavitvi. Mozillina zbirka napak Bugzilla vsebuje 10 odsekov za težave s postavitvijo, kar ne vključuje težav z postavitvijo, ki so kategorizirane kot povezane z DOM, CSS ali Canvasom. Najpomembnejša naloga brskalnika je urediti besedilo in slike, prav tako pa je pogosto težko.

Številne napake pri postavitvi se lahko zdijo majhne do te mere, da so skoraj ezoterične. Napaka Bugzilla 1303580 na primer kliče Firefox, ker uporablja poševno različico pisave, kadar oznake CSS zahtevajo poševno. Morda bi to opazil le odvisnik od pisave. Medtem Bugzilla bug 1296269 poroča, da so deli črk v Comic Sans odrezani, vsaj v sistemu Windows. Oblikovalci pisav razlikujejo in jim je pomembno. Ko ne morejo dobiti natančno pravega videza in občutka v vseh brskalnikih, lahko spletni oblikovalci postanejo nekoliko preveč razočarani.

Teh napak je na stotine, tisoče, morda celo milijone. Ob tem smo naleteli na težave s slikami, ki izginjajo v našem urejevalniku CMS in oznakah razpona, ki so prikazane samo v DOM-u.

Uhajanje pomnilnika

Pogosto je težko opaziti puščanje spomina. Po definiciji ne spremenijo nobenih vidnih lastnosti. Spletno mesto je upodobljeno pravilno, vendar se brskalnik dejansko ne očisti. Nekaj ​​preveč potovanj na spletna mesta, ki sprožijo puščanje, in vaša naprava upočasni, da bi lahko lezla, ker je ves RAM zaklenjen in vsebuje podatkovno strukturo, ki nikoli ne bo prenovljena. Tako OS blokadsko zamenja bloke navideznega pomnilnika na disk in porabite svoj čas za čakanje. Najboljša izbira je ponovni zagon računalnika.

Podrobnosti o napakah pri uhajanju pomnilnika so lahko neverjetno skrivnostne in imamo srečo, da si nekateri programerji vzamejo čas, da jih popravijo. Razmislite o številki 640578 iz sklada brskalnikov Chronium. Spreminjanje dela DOM-a z igranjem innerHTML lastnost pušča spomin. Vzorec kosa kode s tesnim ponavljajočim klicem requestAnimationFrame bo podvojil težavo. Takšnih vprašanj je na desetine.

Seveda ni vedno kriv brskalnik. Na primer Chromium številka 640922 podrobno opisuje uhajanje pomnilnika in ponuja primer. Nadaljnja analiza pa kaže, da je primer kode ustvarjal Datum () predmeti na poti za preizkus časa in so bili verjetno vir problema.

Flash

To je precej uradno. Vsi so pozabili na čudovita umetniška dela in spletne videoposnetke, ki jih je Adobe Flash prinesel na splet. Namesto tega krivimo za vse zrušitve, za katere je morda kriva ali ne. Zdaj je uradno v pokoju, a ne gre hitro. Zdi se, da imajo celo nekatera najbolj napredna podjetja, ki spodbujajo spletne standarde, na svojih straneh še vedno kodo Flash. Presenečen sem, kako pogosto najdem kodo Flash zunaj spletnih mest MySpace in GeoCities.

Dotiki in kliki

Ni lahko žonglirati z različnimi vrstami vnosa, še posebej zdaj, ko tablični računalniki in telefoni ustvarjajo dotike, ki lahko delujejo kot klik miške. Potem ne bi smelo biti presenetljivo, če bi ugotovili, da je na tem področju veliko napak. Okvir Bootstrap JavaScript vsebuje seznam najbolj razburljivih napak in nekaj najhujših padcev v tej kategoriji.

Safari, na primer, bo včasih pogrešal dotikanje prstov po besedilu v oznaka (151933). Včasih meniji na iPadu ne delujejo, ker je brskalnik premaknil pravokotnik za iskanje vnosa (150079). Včasih kliki sprožijo čudno premikanje v izdelku - kar je morda celo videti, kot da ga je namerno naredil razdražljiv oblikovalec (158276). Vse to vodi do zmede, ko se besedilo ali slike na zaslonu ne odzovejo tako, kot pričakujemo.

Video

Načrt je bil vedno poenostaviti dostavo zvoka in slike s premikanjem odgovornosti znotraj brskalnika in izven sveta vtičnikov. To je odpravilo težave z vmesnikom, vendar ni odpravilo vseh težav. Seznam video napak je dolg in mnogi med njimi so preveč vidni. Vnos 754753 v Bugzilli opisuje "večinoma rdeče in zelene madeže, ki vsebujejo različne podobe duhov", vnos v Bugzilla 1302991 pa "jeclja" zaradi pomanjkanja boljše besede. "

Nekatere najbolj zapletene težave se pojavljajo, ko brskalniki vključujejo različne mehanizme šifriranja, namenjene preprečevanju piratstva. Napaka 1304899 kaže, da Firefox ne prenaša samodejno pravega šifrirnega mehanizma (EME) iz Adobeja. Je kriv Firefox? Adobe's? Ali morda čuden posrednik?

Video napake bodo še naprej prevladovale. Povezovanje spletnega videa z drugimi oblikami vsebine z dodajanjem video oznak v HTML5 je odprlo veliko novih možnosti za oblikovalce, vendar vsaka nova možnost pomeni nove priložnosti za pojav napak in nedoslednosti.

Lebdenje

Sposobnost, da spletna stran spremlja miško, ki se premika po njej, pomaga spletnim oblikovalcem, da uporabnikom namignejo, katere funkcije se lahko skrivajo za sliko ali besedo. Žal, lebdeči dogodki se ne vrnejo vedno tako hitro, kot bi lahko.

Novi brskalnik Microsoft Edge, na primer, ne skriva kazalca, ko miška lebdi nad nekaterimi vhodni elementi (817822). Včasih se lebdenje ne konča (5381673). Včasih je dogodek lebdenja povezan z napačnim elementom (7787318). Vse to vodi v zmedo in odvrača od uporabe precej čednega učinka.

Zlonamerna programska oprema

Čeprav je skušnjava krivdo za napake brskalnika pripisati razvijalcem brskalnikov, je pogosto nepošteno. Veliko težav povzroča zlonamerna programska oprema, ki je zasnovana kot uporabna razširitev ali vtičnik. V mnogih primerih zlonamerna programska oprema naredi nekaj zares koristnega, pri tem pa skrivaj krade klike ali trgovino v ozadju.

Težava je v tem, da je razširitveni vmesnik precej zmogljiv. Razširitev lahko vstavi poljubne oznake in kodo na vsa spletna mesta. V pravih rokah je to zelo kul, vendar je enostavno videti, kako lahko nova koda iz razširitve naleti na kodo s spletnega mesta. Kaj? Niste želeli na novo opredeliti vedenja $ funkcijo?

To ni toliko hrošč kot globok, filozofski problem z zelo kul funkcijo. Toda z veliko močjo prihaja velika odgovornost - morda večja, kot jo lahko zbere kateri koli programer razširitve. Najboljši način za obravnavo tega vprašanja je, da se zavedamo, da je to področje, na katerem imamo nadzor uporabniki. Razširitve lahko izklopimo in omejimo na le nekaj spletnih mest, na katerih ni težav. API je nekoliko premočan za vsakodnevno uporabo - tako zmogljiv, da je skušnjava API-jev razširitev poklicati kot največje napake. Toda to bi zanikalo vse, kar naredi za nas.

Povezani članki

  • Beyond jQuery: strokovni vodnik po okvirih JavaScript
  • Pregled: preizkušeno 7 IDE-jev JavaScript
  • Izstrelitev HTML5: Kako se merijo Chrome, Safari, Firefox, IE in Opera
  • Pregled: 13 primo Python spletnih okvirov
  • Moč lenega programiranja
  • Prenesi: Vodnik za razvoj poklicne poti
  • 7 slabih programskih idej, ki delujejo
  • 9 slabih programskih navad, ki jih imamo na skrivaj radi
  • 21 vročih programskih trendov in 21 hladnih
$config[zx-auto] not found$config[zx-overlay] not found