Programmering

7 kroniske nettleserfeil som plager nettet

Nettlesere er fantastiske. Hvis det ikke var nettlesere, ville vi ikke ha kontakt med brukere og kunder nesten like godt ved å helle dataene og dokumentene våre på stasjonære datamaskiner, nettbrett og telefoner. Akk, alt det fantastiske innholdet som leveres av nettleseren, gjør oss så mye mer frustrerte når gjengivelsen ikke er så elegant eller feilfri som vi ønsker.

Når det gjelder utvikling av nettsteder, er vi like mye prisgitt nettlesere som vi er i gjeld til dem. Enhver feil på hvilken som helst plattform hopper ut, spesielt når den krasjer maskinene til brukerne våre. Og med design som en slik premie for å skille seg ut eller å passe inn, ødelegger en hvilken som helst fettlinje eller feil anvendt berøring av farger den estetiske opplevelsen vi har arbeidet med å skape. Selv den minste feilen, som å legge til en ekstra piksel i bredden på en linje eller feiljustere et bord litt, kan resultere i en frustrerende brukeropplevelse, for ikke å nevne kostnadene ved å oppdage, undersøke og jobbe rundt det.

Selvfølgelig pleide det å være verre. De store forskjellene mellom nettlesere er i stor grad slettet av troskap til W3C-nettstandarder. Og forskjellene som er igjen kan generelt ignoreres, takket være spredningen av biblioteker som jQuery, som ikke bare gjør JavaScript-hacking lettere, men også papir over hvordan nettlesere ikke er de samme.

Disse bibliotekene har for vane å fryse nettleserfeil på plass. Hvis nettleserselskaper fikser noen av de verste feilene sine, kan de nye "løsningene" forstyrre gamle oppdateringer og omgåelser. Plutselig blir “fikse” problemet som forstyrrer den gamle stabiliteten vi har jerry-rigget rundt feilen. Programmører kan ikke vinne.

Stabiliteten brakt av biblioteker som jQuery har også oppmuntret nettleserbyggere til å øke hastigheten på og automatisere prosessene for nettleseroppdatering. Mozilla er forpliktet til å presse ut en ny versjon av Firefox noen få måneder. Tidligere ville hver versjon være et stabilt mål for webutviklere, og vi kunne sette litt GIF på nettstedene våre og hevde at de fungerer best i for eksempel IE5. Nå snur kilometertelleren så raskt at en ny versjon av Firefox vil bli utgitt i løpet av den tiden det tar HTML å reise fra serveren til klienten.

I mellomtiden ber vi nettleserne om å gjøre så mye mer. Nettstedet til min lokale avis bringer maskinen min på kne - utvidelse av popover-annonser, videoklipp som automatisk spilles av, kode for å tilpasse annonser til den siste nettlesingsloggen min. Hvis datteren min ser på et dukke-nettsted, prøver JavaScript hektisk å finne en dukkeannonse som skal vises for meg. Alt dette magiske tannkjøttet opp CPU-en.

Alt dette betyr at dagens nettleserfeil er sjeldnere, men vanskeligere å finne ut. Her ser du på de nyeste sjangrene med nettleserfeil som plager - eller i mange tilfeller ganske enkelt nagende - webdesignere og utviklere.

Oppsett

De mest synlige nettleserfeilene er layoutfeil. Mozillas Bugzilla-database med bugs har 10 seksjoner for layoutproblemer, og det inkluderer ikke layoutproblemer som er kategorisert som relatert til DOM, CSS eller Canvas. Nettleserens viktigste jobb er å ordne tekst og bilder, og det er ofte vanskelig å få det riktig.

Mange layoutfeil kan virke små til det punktet å være nesten esoteriske. Bugzilla bug 1303580, for eksempel, roper Firefox for å bruke den kursive versjonen av en skrift når CSS-koder krever skrå. Kanskje bare en fontmisbruker vil merke det. I mellomtiden rapporterer Bugzilla bug 1296269 at deler av bokstavene i Comic Sans er hugget av, i det minste på Windows. Fontdesignere skiller seg ut, og det betyr noe for dem. Når de ikke kan få nøyaktig riktig utseende og følelse i alle nettlesere, kan webdesignere bli litt altfor frustrerte.

Det er hundrevis, tusenvis, kanskje til og med millioner av disse feilene. Vi har opplevd problemer med at bilder forsvinner i CMS-editoren vår og spenningstagger som bare vises i DOM.

Minne lekker

Det er ofte vanskelig å legge merke til minnelekkasjer. Per definisjon endrer de ingen synlige egenskaper. Nettstedet er gjengitt riktig, men nettleseren rydder ikke opp etter det. Noen få for mange turer til nettsteder som utløser lekkasjen og maskinen din senker til en gjennomsøking fordi alt RAM-minnet er låst og holder en datastruktur som aldri vil bli omlagt. Dermed bytter operativsystemet hektisk blokker av virtuelt minne til disk, og du bruker tiden din på å vente. Det beste valget er å starte maskinen på nytt.

Detaljene i minnelekkasjer kan være vanvittig mystiske, og vi er heldige at noen programmerere tar seg tid til å fikse dem. Vurder utgave 640578 fra Chronium-nettleserstakken. Endre en del av DOM ved å fikle med innerHTML eiendom lekker minne. Et eksempel på en kode med en tett gjentatt sløyfe requestAnimationFrame vil duplisere problemet. Det er dusinvis av problemer som dette.

Det er selvfølgelig ikke alltid nettleserens feil. Chromium-utgave 640922 beskriver for eksempel også en minnelekkasje og gir et eksempel. Ytterligere analyse viser imidlertid at eksempelkoden skapte Dato() gjenstander underveis for å teste tiden, og de var sannsynligvis kilden til problemet.

Blits

Det er ganske offisielt. Alle har glemt det fantastiske anti-aliaserte kunstverket og nettvideoene som Adobe Flash brakte på nettet. Vi klandrer det i stedet for alle krasjene som kan ha skjedd. Nå blir den offisielt pensjonert, men det går ikke raskt. Selv noen av de mest fremtidsrettede selskapene som driver webstandarder, ser fortsatt ut til å ha Flash-kode på sidene sine. Jeg er overrasket over hvor ofte jeg finner Flash-kode utenfor MySpace og GeoCities nettsteder.

Berører og klikker

Det er ikke lett å sjonglere med de forskjellige typene innganger, spesielt nå når nettbrett og telefoner genererer berøringer som kanskje fungerer eller ikke fungerer som et museklikk. Det burde ikke være overraskende å finne at det er mange feil i dette området. Bootstrap JavaScript-rammeverket holder en hitliste over de mest opprørende feilene, og noen av de verste fallene i denne kategorien.

Safari, for eksempel, vil noen ganger savne fingeravtrykk på teksten i tag (151933). Noen ganger menyene fungerer ikke på iPad fordi nettleseren har skiftet rektangelet for å lete etter input (150079). Noen ganger utløser klikkene en merkelig vri i varen - som til og med kan se ut som om den ble gjort med vilje av en edgy designer (158276). Alle disse fører til forvirring når teksten eller bildene på skjermen ikke reagerer slik vi forventer.

Video

Planen har alltid vært å forenkle levering av lyd og video ved å flytte ansvaret i nettleseren og ut av plugin-verdenen. Dette har eliminert grensesnittproblemer, men det har ikke fjernet alle problemene. Listen over videofeil er lang, og mange av dem er altfor synlige. Bugzilla-oppføring 754753 beskriver "for det meste røde og grønne flekker som inneholder forskjellige spøkelsesbilder," og Bugzilla-oppføring 1302991 "'stammer" i mangel av et bedre ord. "

Noen av de mest komplekse problemene dukker opp når nettleserne integrerer de forskjellige krypteringsmekanismene designet for å forhindre piratkopiering. Feil 1304899 antyder at Firefox ikke automatisk laster ned riktig krypteringsmekanisme (EME) fra Adobe. Er det Firefox sin feil? Adobe’s? Eller kanskje en rar fullmektig?

Videofeil vil fortsette å dominere. Integrering av nettvideo med andre innholdsformer ved å legge til videokoder i HTML5 har åpnet for mange nye muligheter for designere, men hver nye mulighet betyr nye muligheter for feil og uoverensstemmelser å vises.

Svevende

Nettstedets mulighet til å følge musen som beveger seg over siden, hjelper webdesignere å gi brukerne tips om hvilke funksjoner som kan være skjult bak et bilde eller ord. Akk, svevende begivenheter tar seg ikke alltid opp i kjeden så fort de kunne.

Den nye Microsoft Edge-nettleseren skjuler for eksempel ikke markøren når musen svever over noen inngangsposter (817822). Noen ganger slutter ikke svevingen (5381673). Noen ganger er hover-hendelsen knyttet til feil element (7787318). Alt dette fører til forvirring og motvirker bruken av en ganske pen effekt.

Skadevare

Selv om det er fristende å legge all skylden for nettleserfeil på nettleserutviklere, er det ofte urettferdig. Mange av problemene er forårsaket av skadelig programvare som er utformet for å være nyttige utvidelser eller plugins. I mange tilfeller gjør skadelig programvare noe virkelig nyttig mens det i hemmelighet stjeler klikk eller handel i bakgrunnen.

Problemet er at utvidelsesgrensesnittet er ganske kraftig. En utvidelse kan sette inn vilkårlige koder og kode på alle nettsteder. I høyre hender er dette veldig kult, men det er lett å se hvordan den nye koden fra utvidelsen kan støte på koden fra nettstedet. Hva? Du ønsket ikke å omdefinere oppførselen til $ funksjon?

Dette er ikke så mye en feil som et dypt, filosofisk problem med en veldig kul funksjon. Men med stor kraft kommer stort ansvar - kanskje større enn noen utvidelsesprogrammerer kan mønstre. Den beste måten å se på dette problemet er å innse at det er det området der vi, brukerne, har kontroll. Vi kan slå av utvidelser og begrense dem til bare noen få nettsteder der det ikke er noen problemer. API-en er litt for kraftig til daglig bruk - så kraftig at det er fristende å kalle utvidelses-API-er for de største feilene av alle. Men det vil nekte alt det gjør for oss.

Relaterte artikler

  • Utover jQuery: En ekspertguide til JavaScript-rammer
  • Gjennomgang: 7 JavaScript IDEer satt på prøve
  • HTML5 shoot-out: Hvordan Chrome, Safari, Firefox, IE og Opera måler seg
  • Gjennomgang: 13 primo Python web-rammer
  • Kraften til lat programmering
  • Nedlasting: Utviklerveiledning for karriereutvikler
  • 7 dårlige programmeringsideer som fungerer
  • 9 dårlige programmeringsvaner vi i hemmelighet elsker
  • 21 varme programmeringstrender - og 21 blir kalde
$config[zx-auto] not found$config[zx-overlay] not found