Programovanie

7 chronických chýb prehliadača, ktoré sužujú web

Webové prehliadače sú úžasné. Ak by to nebolo pre prehliadače, nemohli by sme sa tak dobre spojiť s používateľmi a zákazníkmi nalievaním našich údajov a dokumentov do ich počítačov, tabletov a telefónov. Bohužiaľ, všetok úžasný obsah poskytovaný webovým prehliadačom nás robí oveľa frustrovanejšími, keď vykreslenie nie je také elegantné alebo bez chýb, ako by sme chceli.

Pokiaľ ide o vývoj webových stránok, sme prehliadačom vydaní rovnako na milosť a dlhy. Vyskočí akákoľvek porucha na ktorejkoľvek platforme, najmä keď dôjde k poruche strojov našich používateľov. A s dizajnom ako takou prémiou za vyniknutie alebo zapadnutie, akákoľvek tučná čiara alebo nesprávne použitý farebný nádych ničí estetický zážitok, ktorý sme sa snažili vytvoriť. Aj tá najmenšia chyba, ako napríklad pridanie ďalšieho pixela do šírky čiary alebo malé vyrovnanie tabuľky, môže mať za následok frustrujúci dojem používateľa, nehovoriac o nákladoch na jeho objavovanie, preverovanie a prácu s ním.

Samozrejme, bývalo to horšie. Obrovské rozdiely medzi prehľadávačmi boli do veľkej miery vymazané dodržiavaním webových štandardov W3C. A rozdiely, ktoré zostávajú, možno všeobecne ignorovať vďaka množeniu knižníc, ako je jQuery, ktoré nielen uľahčujú hackovanie JavaScriptu, ale aj objasňujú spôsoby, ktoré prehliadače nie sú rovnaké.

Tieto knižnice majú zvyk zmrazovať chyby v prehliadačoch. Ak spoločnosti zaoberajúce sa prehliadačom opravia niektoré zo svojich najhorších chýb, nové „opravy“ môžu narušiť staré opravy a riešenia problémov. „Oprava“ sa zrazu stane problémom, ktorý narúša starú stabilitu, ktorú sme okolo chyby zbabrali. Programátori nemôžu vyhrať.

Stabilita, ktorú priniesli knižnice ako jQuery, tiež povzbudila tvorcov prehľadávačov, aby urýchlili a automatizovali svoje procesy aktualizácie prehľadávača. Mozilla sa zaviazala, že každých pár mesiacov vytlačí novú verziu prehliadača Firefox. V minulosti bola každá verzia stabilným cieľom pre vývojárov webu. Na naše weby by sme mohli vložiť malý súbor GIF, ktorý tvrdí, že najlepšie funguje napríklad v IE5. Počítadlo kilometrov sa teraz otáča tak rýchlo, že nová verzia prehliadača Firefox bude vydaná v čase, keď HTML prejde zo servera na klienta.

Medzitým žiadame prehľadávače, aby robili oveľa viac. Web mojich miestnych novín kladie môj stroj na kolená - rozširovanie vyskakovacích reklám, automatické prehrávanie úryvkov videa, kód na prispôsobenie reklám podľa mojej nedávnej histórie prehliadania. Ak sa moja dcéra pozrie na web s bábikami, JavaScript sa zúfalo snaží nájsť inzerát na bábiku, ktorý by mi ukázal. Všetko toto kúzlo žmýka CPU.

To všetko znamená, že dnešné chyby v prehliadači sú zriedkavejšie, ale ťažšie sa dajú zistiť. Tu je prehľad najnovších žánrov chýb prehliadača, ktoré trápia - alebo v mnohých prípadoch jednoducho otravujú - webových dizajnérov a vývojárov.

Rozloženie

Najviditeľnejšie chyby prehľadávača sú chyby v rozložení. Databáza chýb spoločnosti Mozilla Bugzilla má 10 sekcií zameraných na problémy s rozložením a nezahŕňa problémy s rozložením kategorizované ako súvisiace s DOM, CSS alebo plátnom. Najdôležitejšou úlohou prehliadača je usporiadať text a obrázky. Správne nastavenie je často ťažké.

Mnoho chýb v usporiadaní sa môže javiť ako malé až natoľko, že sú takmer ezoterické. Bugzilla bug 1303580 napríklad vyzýva Firefox, aby používal kurzívu vo verzii písma, keď značky CSS vyžadujú šikmosť. Možno by si to všimol iba závislý na písme. Medzitým chyba Bugzilla 1296269 hlási, že časti písmen v Comic Sans sú odrezané, minimálne v systéme Windows. Návrhári písma rozlišujú a je to pre nich dôležité. Ak weboví dizajnéri nedokážu dosiahnuť správny správny vzhľad a dojem vo všetkých prehľadávačoch, môže to byť trochu prehnane frustrované.

Týchto chýb sú stovky, tisíce, možno dokonca milióny. V čase, keď sme narazili na problémy so stratou obrázkov v našom editore CMS a značkami rozpätia, ktoré sa zobrazujú iba v DOM.

Úniky pamäte

Často je ťažké si všimnúť únik pamäte. Podľa definície nezmenia žiadne viditeľné vlastnosti. Web je vykreslený správne, ale prehliadač po tom nevyčistí. Niekoľko príliš veľa výletov na webové stránky, ktoré spustia únik a vaše zariadenie spomalí prehľadávanie, pretože všetka pamäť RAM je uzamknutá a obsahuje dátovú štruktúru, ktorá už nebude nikdy použitá. OS teda freneticky zamieňa bloky virtuálnej pamäte na disk a vy trávite čas čakaním. Najlepšou voľbou je reštartovať počítač.

Podrobnosti o chybách úniku pamäte môžu byť šialene tajomné a máme šťastie, že si niektorí programátori našli čas na ich opravu. Zvážte problém 640578 zo zásobníka prehliadača Chronium. Zmenou časti modelu DOM fidlovaním s innerHTML vlastnosť úniky pamäte. Ukážka kódu s pevne opakovaným volaním slučky requestAnimationFrame duplikuje problém. Takýchto problémov sú desiatky.

Nie je to samozrejme vždy chyba prehliadača. Napríklad vydanie Chromium 640922 tiež podrobne popisuje únik pamäte a poskytuje príklad. Ďalšia analýza však ukazuje, že sa vytvoril vzorový kód Dátum() cestou testovali čas a pravdepodobne boli zdrojom problému.

Blesk

Je to do značnej miery oficiálne. Každý zabudol na nádherné vyhladené umelecké diela a webové videá, ktoré program Adobe Flash priniesol na web. Namiesto toho ho obviňujeme zo všetkých nehôd, ktoré mohli alebo nemuseli mať na svedomí. Teraz je oficiálne na dôchodku, ale nejde to rýchlo. Zdá sa, že dokonca aj niektoré z najpokrokovejších spoločností presadzujúcich webové štandardy majú na svojich stránkach Flash kód. Som prekvapený, ako často nájdem kód Flash mimo webových stránok MySpace a GeoCities.

Dotyky a kliknutia

Nie je ľahké žonglovať s rôznymi typmi vstupu, najmä teraz, keď tablety a telefóny generujú dotyky, ktoré môžu alebo nemusia pôsobiť ako kliknutie myšou. Potom by nemalo byť prekvapením zistiť, že v tejto oblasti je veľa chýb. Rámec Java Bootstrap udržuje zoznam hitov so svojimi najhorúcejšími chybami a medzi najhoršie patrí táto kategória.

Napríklad prehliadaču Safari niekedy bude chýbať klepnutie prstom na text v priečinku značka (151933). Niekedy ponuky na iPade nefungujú, pretože prehľadávač posunul obdĺžnik na hľadanie vstupu (150079). Kliknutia niekedy spôsobia v položke čudné krútenie - čo môže dokonca vyzerať, akoby to zámerne urobil podráždený dizajnér (158276). To všetko vedie k nejasnostiam, keď text alebo obrázky na obrazovke nereagujú tak, ako očakávame.

Video

Vždy bolo v pláne zjednodušiť doručovanie zvuku a videa presunutím zodpovednosti do prehliadača a zo sveta doplnkov. Týmto sa odstránili problémy s rozhraním, ale neodstránili sa všetky problémy. Zoznam chýb videa je dlhý a veľa z nich je až príliš viditeľných. Položka Bugzilla 754753 popisuje „väčšinou červené a zelené škvrny, ktoré obsahujú rôzne obrázky duchov“, a položka Bugzilla 1302991 „koktá“ pre nedostatok lepšieho slova. “

Niektoré z najzložitejších problémov sa objavujú, keď prehliadače integrujú rôzne šifrovacie mechanizmy určené na prevenciu pirátstva. Chyba 1304899 naznačuje, že Firefox automaticky nestiahne od spoločnosti Adobe správny šifrovací mechanizmus (EME). Je to chyba Firefoxu? Adobe? Alebo možno divný splnomocnenec?

Video chyby budú naďalej dominovať. Integrácia webového videa s inými formami obsahu pridaním značiek videa do formátu HTML5 otvorila návrhárom veľa nových možností, ale každá nová možnosť znamená nové príležitosti na objavenie chýb a nezrovnalostí.

Vznášajúci sa

Schopnosť webovej stránky sledovať pohyb myši po stránke pomáha webovým dizajnérom dávať používateľom tipy, aké funkcie by sa mohli skrývať za obrázkom alebo slovom. Bohužiaľ, vznášajúce sa udalosti sa nie vždy dostanú do reťazca tak rýchlo, ako by mohli.

Napríklad nový prehliadač Microsoft Edge neskryje kurzor, keď nad niektorým kurzorom myši prejde vstupné položky (817822). Vznášanie sa niekedy nekončí (5381673). Udalosť vznášania je niekedy spojená s nesprávnou položkou (7787318). To všetko vedie k zmätku a odrádza od použitia celkom elegantného efektu.

Malvér

Aj keď je lákavé vyvodiť všetku vinu za chyby prehliadača na jeho vývojárov, je to často nespravodlivé. Mnoho problémov spôsobuje malware, ktorý má slúžiť ako užitočné rozšírenie alebo doplnok. V mnohých prípadoch malware robí niečo skutočne užitočné a tajne kradne kliknutia alebo obchod na pozadí.

Problém je v tom, že rozšírenie je veľmi výkonné. Rozšírenie môže vkladať ľubovoľné značky a kód na všetky webové stránky. V tých správnych rukách je to veľmi zaujímavé, ale je ľahké zistiť, ako nový kód z rozšírenia dokáže naraziť na kód z webových stránok. Čo? Nechceli ste predefinovať správanie $ funkcia?

Toto nie je ani tak chyba, ako hlboký filozofický problém s veľmi zaujímavou funkciou. Ale s veľkou silou prichádza veľká zodpovednosť - možno väčšia, ako dokáže zhromaždiť akýkoľvek programátor rozšírení. Najlepším spôsobom, ako sa na túto otázku pozrieť, je uvedomiť si, že je to oblasť, nad ktorou máme kontrolu my, používatelia. Môžeme vypnúť rozšírenia a obmedziť ich iba na niekoľko webových stránok, kde nie sú žiadne problémy. API je na každodenné použitie príliš silné - také silné, že je lákavé nazývať rozšírenia API najväčšími chybami zo všetkých. To by však poprelo všetko, čo pre nás robí.

Súvisiace články

  • Beyond jQuery: Odborný sprievodca rámcami JavaScript
  • Recenzia: Testuje sa 7 IDE JavaScriptu
  • Prestrelka HTML5: Ako sa vyrovnávajú prehliadače Chrome, Safari, Firefox, IE a Opera
  • Recenzia: 13 primo webových rámcov Pythonu
  • Sila lenivého programovania
  • Stiahnuť ▼: Sprievodca kariérnym rozvojom vývojárov
  • 7 zlých nápadov na programovanie, ktoré fungujú
  • 9 zlých programovacích návykov, ktoré tajne milujeme
  • 21 horúcich programovacích trendov - a 21 chladných
$config[zx-auto] not found$config[zx-overlay] not found