Programování

7 chronických chyb v prohlížeči, které trápí web

Webové prohlížeče jsou úžasné. Pokud by to nebylo pro prohlížeče, nemohli bychom se téměř tak dobře spojit s uživateli a zákazníky nalitím našich dat a dokumentů do jejich stolních počítačů, tabletů a telefonů. Bohužel, veškerý skvělý obsah dodávaný webovým prohlížečem nás činí mnohem frustrovanějším, když vykreslení není tak elegantní nebo bez chyb, jak bychom chtěli.

Pokud jde o vývoj webových stránek, jsme vydáni na milost a nemilost prohlížečům, stejně jako jsme jim dlužni. Jakákoli závada na jakékoli platformě vyskočí, zvláště když dojde k selhání strojů našich uživatelů. A vzhledem k tomu, že design jako taková stojí za to vyniknout nebo zapadnout, jakákoli tlustá linie nebo nesprávně použitý barevný nádech ničí estetický zážitek, který jsme se snažili vytvořit. Dokonce i ta nejmenší chyba, jako je přidání dalšího pixelu na šířku čáry nebo malé zarovnání tabulky, může mít za následek frustrující uživatelský zážitek, nemluvě o nákladech na jeho objevení, prověření a práci kolem něj.

Samozřejmě to bývalo horší. Obrovské rozdíly mezi prohlížeči byly do značné míry vymazány věrností webovým standardům W3C. A rozdíly, které přetrvávají, lze obecně ignorovat, a to díky množení knihoven, jako je jQuery, které nejen usnadňují hackování JavaScriptu, ale také dokumentují způsoby, které prohlížeče nejsou stejné.

Tyto knihovny mají ve zvyku zmrazovat chyby v prohlížeči. Pokud společnosti zabývající se prohlížečem opraví některé ze svých nejhorších chyb, mohou nové „opravy“ narušit staré opravy a řešení. Najednou se „oprava“ stává problémem, který narušuje starou stabilitu, kterou jsme kolem chyby zmanipulovali. Programátoři nemohou vyhrát.

Stabilita, kterou přinesly knihovny, jako je jQuery, také povzbudila tvůrce prohlížečů, aby zrychlili a automatizovali procesy aktualizace prohlížeče. Mozilla je odhodlána každých několik měsíců vydávat novou verzi prohlížeče Firefox. V minulosti byla každá verze stabilním cílem pro webové vývojáře a mohli bychom na naše stránky umístit malý GIF, který tvrdí, že fungují nejlépe například v IE5. Nyní se počítadlo kilometrů otáčí tak rychle, že bude vydána nová verze Firefoxu v době, kdy bude HTML muset cestovat ze serveru na klienta.

Mezitím žádáme prohlížeče, aby toho udělaly mnohem víc. Web mých místních novin srazil můj stroj na kolena - rozšiřování vyskakovacích reklam, úryvky videa, které se automaticky přehrávají, kód pro přizpůsobení reklam mé nedávné historii prohlížení. Pokud se moje dcera podívá na web pro panenky, JavaScript se zoufale snaží najít reklamu na panenku, která by mi ji ukázala. To vše kouzlo žvýká CPU.

To vše znamená, že dnešní chyby v prohlížeči jsou vzácnější, ale těžší je zjistit. Zde je pohled na nejnovější žánry chyb v prohlížeči, které trápí - nebo v mnoha případech jednoduše otravují - webové designéry a vývojáře.

Rozložení

Nejviditelnějšími chybami prohlížeče jsou závady rozvržení. Databáze chyb Bugzilla společnosti Mozilla má 10 sekcí pro problémy s rozložením a to nezahrnuje problémy s rozložením kategorizované jako související s DOM, CSS nebo plátnem. Nejdůležitějším úkolem prohlížeče je uspořádat text a obrázky a jeho úprava je často obtížná.

Mnoho chyb v rozložení se může zdát malé až téměř esoterické. Bugzilla bug 1303580 například volá Firefox za použití kurzívové verze písma, když značky CSS vyžadují šikmý. To by si snad všiml pouze narkoman. Bugzilla bug 1296269 mezitím hlásí, že části písmen v Comic Sans jsou useknuty, alespoň v systému Windows. Návrháři písma rozlišují a je to pro ně důležité. Když ve všech prohlížečích nedosáhnou správného vzhledu a dojmu, mohou být weboví designéři možná trochu příliš frustrovaní.

Těchto chyb jsou stovky, tisíce, možná dokonce miliony. V době, kdy jsme narazili na problémy s mizením obrázků v našem editoru CMS, se značkami rozpětí, které se objevují pouze v modelu DOM.

Úniky paměti

Často je těžké si všimnout úniku paměti. Podle definice nemění žádné viditelné vlastnosti. Web je vykreslen správně, ale prohlížeč se poté nevyčistí. Několik příliš mnoha výletů na webové stránky, které způsobí únik a váš počítač zpomalí procházení, protože veškerá paměť RAM je uzamčena a drží datovou strukturu, která nikdy nebude znovu použita. OS tedy zběsile zaměňuje bloky virtuální paměti na disk a vy strávíte čas čekáním. Nejlepší volbou je restartovat počítač.

Podrobnosti o chybách úniku paměti mohou být šíleně tajemné a máme štěstí, že si někteří programátoři našli čas na jejich opravu. Zvažte problém 640578 ze zásobníku prohlížeče Chronium. Změna části DOMu manipulací s innerHTML vlastnost propouští paměť. Ukázka kódu s pevně opakovaným voláním smyčky requestAnimationFrame duplikuje problém. Takových problémů jsou desítky.

Samozřejmě to není vždy chyba prohlížeče. Například vydání Chromium 640922 také podrobně popisuje únik paměti a poskytuje příklad. Další analýza však ukazuje, že se vytvářel ukázkový kód Datum() cestou testovaly čas a byly pravděpodobně zdrojem problému.

Blikat

Je to docela oficiální. Každý už zapomněl na skvělá vyhlazená umělecká díla a webová videa, která Adobe Flash přinesl na web. Místo toho obviňujeme všechny havárie, které mohou nebo nemusí být jeho chybou. Nyní je oficiálně v důchodu, ale nejde to rychle. Dokonce i některé z nejvíce prozíravých společností prosazujících webové standardy stále mají na svých stránkách Flash kód. Překvapuje mě, jak často najdu Flash kód mimo webové stránky MySpace a GeoCities.

Doteky a kliknutí

Není snadné žonglovat s různými typy zadávání, zvláště teď, když tablety a telefony generují dotyky, které mohou nebo nemusí fungovat jako kliknutí myší. Nemělo by být překvapením, když zjistíte, že v této oblasti je spousta chyb. Rámec Java Bootstrap udržuje seznam hitů nejzlobivějších chyb a některé z nejhorších spadají do této kategorie.

Například Safari bude někdy chybět klepnutí prstem na text v značka (151933). Někdy nabídky na iPadu nefungují, protože prohlížeč posunul obdélník pro hledání vstupu (150079). Kliknutí někdy způsobí v položce divné kroucení - což může dokonce vypadat, jako by to bylo záměrně provedeno podrážděným návrhářem (158276). To vše vede ke zmatku, když text nebo obrázky na obrazovce nereagují tak, jak očekáváme.

Video

V plánu vždy bylo zjednodušit doručování zvuku a videa přesunutím odpovědnosti do prohlížeče a ze světa pluginů. Tím se odstranily problémy s rozhraním, ale neodstranily se všechny problémy. Seznam chyb videa je dlouhý a mnoho z nich je příliš viditelných. Položka Bugzilla 754753 popisuje „většinou červené a zelené skvrny, které obsahují různé obrázky duchů“, a položka Bugzilla 1302991 „koktá“ kvůli nedostatku lepšího slova. “

Některé z nejsložitějších problémů se objevují, protože prohlížeče integrují různé šifrovací mechanismy určené k prevenci pirátství. Chyba 1304899 naznačuje, že Firefox automaticky nestahuje od společnosti Adobe správný šifrovací mechanismus (EME). Je to chyba Firefoxu? Adobe? Nebo možná divný proxy?

Video chyby budou i nadále dominovat. Integrace webového videa s jinými formami obsahu přidáním značek videa do HTML5 otevřela designérům mnoho nových možností, ale každá nová možnost znamená nové příležitosti pro objevování chyb a nekonzistencí.

Vznášející se

Schopnost webové stránky sledovat pohyb myši po stránce pomáhá webovým návrhářům poskytnout uživatelům tipy, jaké funkce se mohou skrývat za obrázkem nebo slovem. Bohužel, vznášející se události se vždy nedostanou do řetězce tak rychle, jak by mohly.

Například nový prohlížeč Microsoft Edge neskrývá kurzor, když nad některým kurzorem najedete myší vstupní položky (817822). Vznášení někdy nekončí (5381673). Někdy je událost přechodu propojena s nesprávnou položkou (7787318). To vše vede ke zmatku a odrazuje od použití docela čistého efektu.

Malware

I když je lákavé svrhnout veškerou vinu za chyby prohlížeče na vývojáře prohlížečů, je to často nespravedlivé. Mnoho problémů je způsobeno malwarem navrženým jako užitečné rozšíření nebo doplňky. V mnoha případech malware dělá něco opravdu užitečného, ​​zatímco tajně krade kliknutí nebo obchod na pozadí.

Problém je v tom, že rozhraní rozšíření je docela silné. Rozšíření může vložit libovolné značky a kód na všechny webové stránky. Ve správných rukou je to skvělé, ale je snadné vidět, jak nový kód z rozšíření může narazit na kód z webu. Co? Nechtěli jste předefinovat chování $ funkce?

To není ani tak chyba, jako hluboký, filozofický problém s velmi cool funkcí. Ale s velkou mocí přichází velká odpovědnost - možná větší, než jaký dokáže shromáždit jakýkoli programátor rozšíření. Nejlepší způsob, jak se na tento problém podívat, je uvědomit si, že je to jedna oblast, nad kterou máme kontrolu my uživatelé. Můžeme vypnout rozšíření a omezit je pouze na několik webů, kde nejsou žádné problémy. Rozhraní API je pro každodenní použití příliš výkonné - tak výkonné, že je lákavé nazývat rozšíření API největší chyby ze všech. To by však popřelo vše, co pro nás dělá.

Související články

  • Beyond jQuery: Expert guide to JavaScript frameworks
  • Recenze: Testováno 7 IDE JavaScriptu
  • Rozstřel HTML5: Jak se měří Chrome, Safari, Firefox, IE a Opera
  • Recenze: 13 primo webových rámců Pythonu
  • Síla líného programování
  • Stažení: Průvodce pro rozvoj kariéry pro vývojáře
  • 7 špatných nápadů na programování, které fungují
  • 9 špatných programovacích návyků, které tajně milujeme
  • 21 horkých programovacích trendů - a 21 chladných
$config[zx-auto] not found$config[zx-overlay] not found