Programmēšana

7 hroniskas pārlūka kļūdas, kas nomoka tīmekli

Tīmekļa pārlūkprogrammas ir pārsteidzošas. Ja nebūtu pārlūkprogrammu, mēs nevarētu gandrīz tikpat labi sazināties ar lietotājiem un klientiem, ielejot savus datus un dokumentus viņu galddatoros, planšetdatoros un tālruņos. Diemžēl viss brīnišķīgais saturs, ko nodrošina tīmekļa pārlūkprogramma, padara mūs daudz neapmierinātākus, ja renderēšana nav tik eleganta vai bez kļūdām, kā mēs vēlētos.

Runājot par vietņu izstrādi, mēs esam tikpat pakļauti pārlūkprogrammu žēlastībai, cik esam parādā tām. Jebkurš jebkuras platformas traucējums izlec, it īpaši, ja tas avarē mūsu lietotāju mašīnām. Ar dizainu kā tādu piemaksu par izcelšanos vai iekļaušanos, jebkura tauku līnija vai nepareizi pielietots krāsu pieskāriens iznīcina estētisko pieredzi, kuru esam radījuši. Pat mazākā kļūda, piemēram, papildu pikseļa pievienošana līnijas platumam vai tabulas nedaudz savietošana, var izraisīt neapmierinošu lietotāja pieredzi, nemaz nerunājot par izmaksām, kas saistītas ar tās atklāšanu, pārbaudi un ap to.

Protams, agrāk bija sliktāk. Lielās atšķirības starp pārlūkprogrammām lielā mērā ir izdzēstas, uzticoties W3C tīmekļa standartiem. Paliekošās atšķirības parasti var ignorēt, pateicoties tādu bibliotēku kā jQuery izplatībai, kas ne tikai atvieglo JavaScript uzlaušanu, bet arī papīra veidus, kā pārlūkprogrammas nav vienādas.

Šīm bibliotēkām ir ieradums iesaldēt pārlūkprogrammas kļūdas. Ja pārlūkprogrammu uzņēmumi novērš dažas no sliktākajām kļūdām, jaunie labojumi var traucēt vecos ielāpus un to novēršanu. Pēkšņi “labojums” kļūst par problēmu, kas izjauc veco stabilitāti, kuru esam apķēruši pie kļūdas. Programmētāji nevar uzvarēt.

Stabilitāte, ko nodrošina tādas bibliotēkas kā jQuery, ir arī mudinājusi pārlūku veidotājus paātrināt un automatizēt pārlūka atjaunināšanas procesus. Mozilla ir apņēmusies ik pēc pāris mēnešiem izstumt jaunu Firefox versiju. Agrāk katra versija būtu stabils mērķis tīmekļa izstrādātājiem, un mēs varētu savās vietnēs ievietot nelielu GIF, apgalvojot, ka tie vislabāk darbojas, teiksim, IE5. Tagad odometrs pagriežas tik ātri, ka tiek izlaista jauna Firefox versija laikā, kad HTML jānoiet no servera uz klientu.

Tikmēr mēs lūdzam pārlūkus darīt daudz vairāk. Mana vietējā laikraksta vietne liek manai mašīnai uz ceļiem - paplašinās uznirstošās reklāmas, video fragmenti, kas tiek automātiski atskaņoti, kods, lai pielāgotu reklāmas manai nesenajai pārlūkošanas vēsturei. Ja mana meita ieskatās leļļu vietnē, JavaScript izmisīgi cenšas atrast leļļu reklāmu, kuru man parādīt. Visa šī maģija palielina CPU.

Tas viss nozīmē, ka mūsdienu pārlūka kļūdas ir retākas, taču tās ir grūtāk noteikt. Piedāvājam ieskatu jaunākajos pārlūka kļūdu žanros, kas nomoka - vai daudzos gadījumos vienkārši tracina - tīmekļa dizainerus un izstrādātājus.

Izkārtojums

Redzamākās pārlūka kļūdas ir izkārtojuma kļūmes. Mozilla Bugzilla kļūdu datu bāzē ir 10 sadaļas izkārtojuma problēmām, un tajā nav iekļauti izkārtojuma jautājumi, kas klasificēti kā saistīti ar DOM, CSS vai Canvas. Pārlūkprogrammas vissvarīgākais uzdevums ir sakārtot tekstu un attēlus, un to pareizi izdarīt bieži ir grūti.

Daudzas izkārtojuma kļūdas var šķist mazas, līdz tās ir gandrīz ezotēriskas. Piemēram, Bugzilla bug 1303580 izsauc Firefox par fonta kursīvā versijas izmantošanu, kad CSS tagi prasa slīpi. Varbūt to pamanīs tikai fontu atkarīgais. Tikmēr Bugzilla bug 1296269 ziņo, ka Comic Sans burtu daļas ir sadalītas, vismaz operētājsistēmā Windows. Fontu dizaineri izšķir, un viņiem tas ir svarīgi. Ja viņi nevar iegūt precīzu pareizo izskatu un izjūtu visos pārlūkos, tīmekļa dizaineri var kļūt mazliet neapmierināti.

Šo kļūdu ir simtiem, tūkstošiem, varbūt pat miljoniem. Pie mums ir radušās problēmas ar attēlu pazušanu mūsu CMS redaktorā un span tagiem, kas parādās tikai DOM.

Atmiņas noplūde

Bieži ir grūti pamanīt atmiņas noplūdi. Pēc definīcijas tie nemaina redzamās īpašības. Vietne tiek atveidota pareizi, taču pārlūkprogramma pēc tam netiek attīrīta. Pārāk daudz ceļojumu uz vietnēm, kas izraisa noplūdi, un jūsu mašīna palēninās līdz rāpošanai, jo visa RAM ir bloķēta, turot datu struktūru, kas nekad netiks mainīta. Tādējādi OS izmisīgi maina virtuālās atmiņas blokus diskā, un jūs pavadāt laiku gaidot. Labākā izvēle ir datora atsāknēšana.

Sīkāka informācija par atmiņas noplūdes kļūdām var būt satriecoša, un mums ir paveicies, ka daži programmētāji velta laiku to novēršanai. Apsveriet jautājumu 640578 no pārlūka Chronium kaudzes. DOM daļas nomaiņa, sīkdatnes ar iekšējaisHTML īpašums nopludina atmiņu. Koda fragmenta paraugs ar stingru atkārtotu cilpu izsaukšanu requestAnimationFrame dublēs problēmu. Šādi jautājumi ir desmitiem.

Protams, ne vienmēr tā ir pārlūka vaina. Piemēram, Chromium izdevumā 640922 detalizēti aprakstīta atmiņas noplūde un sniegts piemērs. Turpmāka analīze tomēr parāda, ka koda piemērs tika izveidots Datums() objektus, lai pārbaudītu laiku, un, iespējams, tie bija problēmas avots.

Zibspuldze

Tas ir diezgan oficiāls. Ikviens ir aizmirsis par brīnišķīgo pret aliasu vērsto mākslas darbu un tīmekļa videoklipiem, ko Adobe Flash nesa tīmeklī. Tā vietā mēs vainojam to visās avārijās, kuras, iespējams, ir bijušas tās vainas dēļ. Tagad tas tiek oficiāli pensionēts, bet tas nenotiek ātri. Šķiet, ka pat dažās no visattīstītākajām kompānijām, kas uzstāj tīmekļa standartus, joprojām ir Flash kods savās lapās. Esmu pārsteigts, cik bieži es atrodu Flash kodu ārpus MySpace un GeoCities vietnēm.

Pieskārieni un klikšķi

Nav viegli žonglēt ar dažādiem ievades veidiem, it īpaši tagad, kad planšetdatori un tālruņi rada pieskārienus, kas var darboties vai neizdoties kā peles klikšķis. Tad nevajadzētu pārsteigt, ja šajā jomā ir daudz kļūdu. Bootstrap JavaScript ietvars saglabā savu visvairāk satraucošo kļūdu sarakstu, un daži no sliktākajiem ietilpst šajā kategorijā.

Piemēram, Safari dažreiz nepalaidīs garām pieskārienu tekstam birka (151933). Dažreiz izvēlnes nedarbojas iPad, jo pārlūks ir mainījis taisnstūri ievades meklēšanai (150079). Dažreiz klikšķi izraisa dīvainu ķibeli priekšmetā - kas varētu pat izskatīties tā, it kā to ar nodomu izdarītu nervozs dizainers (158276). Tas viss rada neskaidrības, ja ekrānā redzamais teksts vai attēli nereaģē tā, kā mēs gaidām.

Video

Plāns vienmēr ir bijis vienkāršot audio un video piegādi, pārvietojot atbildību pārlūkprogrammā un ārpus spraudņu pasaules. Tas ir novērsis saskarnes problēmas, taču tas nav novērsis visas problēmas. Video kļūdu saraksts ir garš, un daudzi no tiem ir pārāk redzami. Bugzilla ieraksts 754753 apraksta “galvenokārt sarkanās un zaļās krāsas plankumus, kas satur dažādus spoku attēlus”, un Bugzilla ierakstu 1302991 “labāka vārda trūkuma dēļ stutē”.

Daži no vissarežģītākajiem jautājumiem rodas, pārlūkprogrammās integrējot dažādus šifrēšanas mehānismus, kas paredzēti pirātisma novēršanai. Kļūda 1304899 liecina, ka Firefox no Adobe automātiski nelādē pareizo šifrēšanas mehānismu (EME). Vai tā ir Firefox vaina? Adobe? Vai varbūt dīvains starpniekserveris?

Video kļūdas turpinās dominēt. Tīmekļa video integrēšana ar cita veida saturu, pievienojot video tagus HTML5, dizaineriem ir pavērusi daudz jaunu iespēju, taču katra jauna iespēja nozīmē jaunas kļūdu un neatbilstību parādīšanās iespējas.

Virzīts

Tīmekļa lapas spēja sekot pelei, kas pārvietojas pa lapu, palīdz tīmekļa dizaineriem dot lietotājiem padomus par to, kādas funkcijas varētu būt paslēptas aiz attēla vai vārda. Ak, lidojošie notikumi ne vienmēr nonāk ķēdē tik ātri, cik vien iespējams.

Piemēram, jaunais Microsoft Edge pārlūks neslēpj kursoru, kad pele kursē virs dažiem ievades vienumi (817822). Dažreiz lidināšana nebeidzas (5381673). Dažreiz kursora notikums ir saistīts ar nepareizu vienumu (7787318). Tas viss rada neskaidrības un attur izmantot diezgan veiklu efektu.

Ļaunprātīga programmatūra

Lai gan ir vilinoši visu vainu pārlūka izstrādātājiem uzmest pārlūka izstrādātājiem, tas bieži vien ir negodīgi. Daudzas problēmas rada ļaunprātīga programmatūra, kas paredzēta kā noderīgs paplašinājums vai spraudnis. Daudzos gadījumos ļaunprogrammatūra dara kaut ko patiesi noderīgu, bet slepeni zog klikšķus vai komerciju fonā.

Problēma ir tā, ka paplašinājuma saskarne ir diezgan spēcīga. Paplašinājums var ievietot patvaļīgus tagus un kodus visās vietnēs. Labajās rokās tas ir ļoti forši, taču ir viegli saprast, kā jaunais paplašinājuma kods var iekļūt vietnes kodā. Kas? Jūs nevēlējāties no jauna definēt $ funkcija?

Šī nav tik liela kļūda, cik dziļa, filozofiska problēma ar ļoti foršu funkciju. Bet ar lielu spēku nāk liela atbildība - varbūt lielāka nekā jebkurš paplašinājuma programmētājs var sanākt. Labākais veids, kā aplūkot šo problēmu, ir saprast, ka tā ir joma, kurā mums, lietotājiem, ir kontrole. Mēs varam izslēgt paplašinājumus un ierobežot tos tikai dažās vietnēs, kur nav problēmu. API ir mazliet pārāk spēcīgs ikdienas lietošanai - tik spēcīgs, ka ir vilinoši saukt paplašinājumu API par lielākajām kļūdām. Bet tas liegtu visu, ko tas mūsu labā dara.

Saistītie raksti

  • Ārpus jQuery: ekspertu ceļvedis JavaScript ietvariem
  • Pārskats: 7 JavaScript IDE ir pārbaudīti
  • HTML5 izšaušana: kā Chrome, Safari, Firefox, IE un Opera mēra
  • Pārskats: 13 primo Python tīmekļa ietvari
  • Slinka programmēšanas spēks
  • Lejupielādēt: Izstrādātāja karjeras attīstības ceļvedis
  • 7 sliktas programmēšanas idejas, kas darbojas
  • 9 slikti programmēšanas ieradumi, kurus mēs slepeni mīlam
  • 21 karsta programmēšanas tendence - un 21 auksta
$config[zx-auto] not found$config[zx-overlay] not found