Programmering

7 kroniske browserfejl, der plager internettet

Webbrowsere er fantastiske. Hvis det ikke var for browsere, ville vi ikke være i stand til at oprette forbindelse lige så godt til brugere og kunder ved at hælde vores data og dokumenter i deres desktops, tablets og telefoner. Ak, alt det vidunderlige indhold, der leveres af webbrowseren, gør os meget mere frustrerede, når gengivelsen ikke er så elegant eller fejlfri, som vi gerne vil.

Når det kommer til at udvikle websteder, er vi lige så meget prisgunstige på browsere, som vi er i gæld til dem. Enhver fejl på enhver platform springer ud, især når den styrter vores brugers maskiner. Og med design som sådan en præmie for at skille sig ud eller montere, ødelægger enhver fedtlinie eller forkert anvendt berøring af farve den æstetiske oplevelse, vi har arbejdet på at skabe. Selv den mindste fejl, som at tilføje en ekstra pixel til bredden på en linje eller forkert justere et bord lidt, kan resultere i en frustrerende brugeroplevelse for ikke at nævne omkostningerne ved at opdage, undersøge og arbejde rundt om det.

Selvfølgelig plejede det at være værre. De store forskelle mellem browsere er stort set blevet slettet af troskab til W3C webstandarder. Og de forskelle, der er tilbage, kan generelt ignoreres takket være spredningen af ​​biblioteker som jQuery, som ikke kun gør JavaScript-hacking lettere, men også papir over de måder, som browsere ikke er de samme.

Disse biblioteker har en vane med at fryse browserfejl på plads. Hvis browserfirmaer retter nogle af deres værste fejl, kan de nye "rettelser" forstyrre gamle programrettelser og omgåelser. Pludselig bliver “fix” det problem, der forstyrrer den gamle stabilitet, vi har jerry-rigget omkring bugten. Programmører kan ikke vinde.

Den stabilitet, der er frembragt af biblioteker som jQuery, har også tilskyndet browserudviklere til at fremskynde og automatisere deres browseropdateringsprocesser. Mozilla er forpligtet til at skubbe en ny version af Firefox ud hvert par måneder. Tidligere ville hver version være et stabilt mål for webudviklere, og vi kunne lægge en lille GIF på vores websteder og hævde, at de fungerer bedst i f.eks. IE5. Nu drejer kilometertælleren så hurtigt, at en ny version af Firefox frigives i den tid, det tager HTML at rejse fra serveren til klienten.

I mellemtiden beder vi browserne om at gøre så meget mere. Min lokale avis websted sætter min maskine på knæ - udvider popover-annoncer, videouddrag, der automatisk afspilles, kode for at tilpasse annoncer til min seneste browserhistorik. Hvis min datter kigger på et dukkewebsted, forsøger JavaScript hidsigt at finde en dukkeannonce, der kan vises til mig. Alt dette magiske tandkød op CPU'en.

Alt dette betyder, at nutidens browserfejl er sjældnere, men sværere at fastgøre. Her er et kig på de nyeste genrer af browserfejl, der plager - eller i mange tilfælde simpelthen nagende - webdesignere og udviklere.

Layout

De mest synlige browserfejl er layoutfejl. Mozillas Bugzilla-database med fejl har 10 sektioner til layoutproblemer, og det inkluderer ikke layoutproblemer, der er kategoriseret som relateret til DOM, CSS eller Canvas. Browserens vigtigste job er at arrangere tekst og billeder, og det er ofte svært at få det rigtigt.

Mange layoutfejl kan virke små til det punkt at være næsten esoteriske. Bugzilla bug 1303580 kalder for eksempel Firefox til at bruge den kursive version af en skrifttype, når CSS-tags kræver skrå. Måske vil kun en fontmisbruger bemærke det. I mellemtiden rapporterer Bugzilla bug 1296269, at dele af bogstaverne i Comic Sans er hugget af, i det mindste på Windows. Fontdesignere skelner, og det betyder noget for dem. Når de ikke kan få det nøjagtige udseende og fornemmelse i alle browsere, kan webdesignere måske blive lidt alt for frustrerede.

Der er hundreder, tusinder, måske endda millioner af disse bugs. Vi har stødt på problemer med billeder, der forsvinder i vores CMS-editor og span-tags, der kun vises i DOM.

Hukommelse lækker

Det er ofte svært at bemærke hukommelseslækage. Pr. Definition ændrer de ikke nogen synlige egenskaber. Webstedet gengives korrekt, men browseren rydder ikke op efter det faktum. Et par for mange ture til websteder, der udløser lækagen, og din maskine sænker til en gennemgang, fordi al RAM er låst inde med en datastruktur, der aldrig bliver genbrugt. Således bytter OS hektisk blokke af virtuel hukommelse til disk, og du bruger din tid på at vente. Det bedste valg er at genstarte din maskine.

Detaljerne i hukommelsesfejl kan være vanvittigt uklar, og vi er heldige, at nogle programmører tager sig tid til at rette dem. Overvej problem 640578 fra Chronium-browserstakken. Ændring af en del af DOM ved at snakke med innerHTML ejendom lækker hukommelse. Et eksempel på et stykke kode med en tæt gentagen loop-kald requestAnimationFrame duplikerer problemet. Der er snesevis af spørgsmål som denne.

Det er selvfølgelig ikke altid browserens skyld. Chromium-udgave 640922 beskriver for eksempel også en hukommelseslækage og giver et eksempel. Yderligere analyse viser dog, at eksempelkoden oprettede Dato() genstande undervejs for at teste tiden, og de var sandsynligvis kilden til problemet.

Blitz

Det er stort set officielt. Alle har glemt det vidunderlige anti-alias-kunstværk og webvideoer, som Adobe Flash bragte til internettet. Vi bebrejder det i stedet for alle de nedbrud, der måske eller måske ikke har været dens skyld. Nu går det officielt på pension, men det går ikke hurtigt. Selv nogle af de mest fremadrettede virksomheder, der skubber til webstandarder, ser stadig ud til at have Flash-kode på deres sider. Jeg er overrasket over, hvor ofte jeg finder Flash-kode uden for MySpace og GeoCities-websteder.

Berører og klikker

Det er ikke let at jonglere med de forskellige typer input, især nu når tablets og telefoner genererer berøringer, der måske eller måske ikke fungerer som et museklik. Det bør ikke være overraskende at finde ud af, at der er masser af bugs i dette område. Bootstrap JavaScript-rammen holder en hitliste over sine mest irriterende bugs, og nogle af de værste falder i denne kategori.

Safari vil f.eks. Nogle gange savne fingeraftryk på teksten i tag (151933). Undertiden menuer fungerer ikke på iPad, fordi browseren har skiftet rektanglet for at se efter input (150079). Nogle gange udløser klikene en underlig vrikning i varen - som måske endda ser ud som om den blev gjort med vilje af en edgy designer (158276). Alle disse fører til forvirring, når teksten eller billederne på skærmen ikke reagerer som vi forventer.

Video

Planen har altid været at forenkle leveringen af ​​lyd og video ved at flytte ansvaret inde i browseren og ud af plugins-verdenen. Dette har fjernet problemer med grænsefladen, men det har ikke fjernet alle problemerne. Listen over videobugs er lang, og mange af dem er alt for synlige. Bugzilla-post 754753 beskriver "for det meste røde og grønne pletter, der indeholder forskellige spøgelsesbilleder", og Bugzilla-post 1302991 "'stammer" i mangel af et bedre ord. "

Nogle af de mest komplekse problemer opstår, da browsere integrerer de forskellige krypteringsmekanismer designet til at forhindre piratkopiering. Fejl 1304899 antyder, at Firefox ikke automatisk downloader den rigtige krypteringsmekanisme (EME) fra Adobe. Er det Firefoxs skyld? Adobe? Eller måske en underlig proxy?

Videobugs fortsætter med at dominere. Integrering af webvideo med andre former for indhold ved at tilføje videotags til HTML5 har åbnet mange nye muligheder for designere, men hver nye mulighed betyder nye muligheder for fejl og uoverensstemmelser at vises.

Svæver

Websides evne til at følge musen bevæger sig over siden hjælper webdesignere med at give brugerne tip om, hvilke funktioner der kan være skjult bag et billede eller ord. Ak, svævende begivenheder kommer ikke altid op ad kæden så hurtigt som de kunne.

Den nye Microsoft Edge-browser skjuler for eksempel ikke markøren, når musen svæver over nogle inputelementer (817822). Nogle gange slutter svævningen ikke (5381673). Undertiden er svævebegivenheden knyttet til den forkerte vare (7787318). Alt dette fører til forvirring og modvirker brugen af ​​en ret pæn effekt.

Malware

Selvom det er fristende at lægge al skylden for browserfejl på browserudviklere, er det ofte uretfærdigt. Mange af problemerne er forårsaget af malware designet til at udgøre som nyttige udvidelser eller plugins. I mange tilfælde gør malware noget virkelig nyttigt, mens det i hemmelighed stjæler klik eller handel i baggrunden.

Problemet er, at udvidelsesgrænsefladen er ret kraftig. En udvidelse kan indsætte vilkårlige tags og kode på alle websteder. I de rigtige hænder er dette meget sejt, men det er let at se, hvordan den nye kode fra udvidelsen kan støde på koden fra hjemmesiden. Hvad? Du ønskede ikke at omdefinere $ fungere?

Dette er ikke så meget en fejl som et dybt, filosofisk problem med en meget sej funktion. Men med stor kraft kommer et stort ansvar - måske større end nogen udvidelsesprogrammerer kan mønstre. Den bedste måde at se på dette problem er at indse, at det er det eneste område, hvor vi, brugerne, har kontrol. Vi kan slå udvidelser fra og begrænse dem til kun et par websteder, hvor der ikke er problemer. API'et er lidt for kraftigt til daglig brug - så kraftigt, at det er fristende at kalde udvidelses-API'er for de største fejl af alle. Men det ville nægte alt, hvad det gør for os.

Relaterede artikler

  • Beyond jQuery: En ekspertguide til JavaScript-rammer
  • Gennemgang: 7 JavaScript IDE'er testes
  • HTML5 shoot-out: Hvordan Chrome, Safari, Firefox, IE og Opera måler sig
  • Anmeldelse: 13 primo Python webrammer
  • Kraften ved doven programmering
  • Hent: Vejledning til udvikling af karriereudvikler
  • 7 dårlige programmeringsideer, der fungerer
  • 9 dårlige programmeringsvaner, som vi i hemmelighed elsker
  • 21 varme programmeringstendenser - og 21 bliver koldt