7 хронични грешки в браузъра, които измъчват мрежата

Уеб браузърите са невероятни. Ако не бяха браузърите, нямаше да можем да се свържем почти толкова добре с потребители и клиенти, като изливаме данните и документите си в техните настолни компютри, таблети и телефони. Уви, цялото прекрасно съдържание, доставено от уеб браузъра, ни прави толкова по-разочаровани, когато изобразяването не е толкова елегантно или без грешки, колкото бихме искали.

Що се отнася до разработването на уебсайтове, ние сме толкова на милостта на браузърите, колкото сме им длъжници. Всеки бъг на която и да е платформа изскача, особено когато срива машините на нашите потребители. И с дизайна като такъв премия за открояване или вписване, всяка дебела линия или неправилно нанесено докосване на цвета унищожава естетическото изживяване, което сме се старали да създадем. Дори и най-малката грешка, като добавяне на допълнителен пиксел към ширината на ред или неправилно подравняване на таблица с малко, може да доведе до разочароващо потребителско изживяване, да не говорим за разходите за откриване, проверка и работа около него.

Разбира се, по-рано беше по-лошо. Огромните разлики между браузърите са до голяма степен изтрити поради придържането към уеб стандартите на W3C. И разликите, които остават, могат да бъдат игнорирани като цяло, благодарение на разпространението на библиотеки като jQuery, които не само улесняват хакерството на JavaScript, но и хартия за начините, по които браузърите не са еднакви.

Тези библиотеки имат навика да замразяват грешки в браузъра на място. Ако компаниите за браузъри поправят някои от най-лошите си грешки, новите „поправки“ могат да нарушат старите кръпки и заобикалящите ги проблеми. Изведнъж „корекцията“ се превръща в проблем, който нарушава старата стабилност, която сме подправили около грешката. Програмистите не могат да спечелят.

Стабилността, донесена от библиотеки като jQuery, също насърчи конструкторите на браузъри да ускорят и автоматизират процесите на актуализиране на браузъра си. Mozilla се ангажира да изтласка нова версия на Firefox на всеки няколко месеца. В миналото всяка версия би била стабилна цел за уеб разработчиците и бихме могли да поставим малко GIF на нашите сайтове, като твърдим, че работят най-добре в IE5, да речем. Сега одометърът се превръща толкова бързо, че ще бъде пусната нова версия на Firefox във времето, необходимо на HTML за пътуване от сървъра до клиента.

Междувременно молим браузърите да направят много повече. Уебсайтът на местния ми вестник поставя машината ми на колене - разширяване на реклами за показване, видео фрагменти, които се пускат автоматично, код за персонализиране на рекламите според скорошната ми история на сърфиране. Ако дъщеря ми разглежда уебсайт за кукли, JavaScript неистово се опитва да намери реклама за кукла, която да ми покаже. Всичко това вълшебно довежда до процесора.

Всичко това означава, че днешните грешки в браузъра са по-редки, но по-трудни за определяне. Ето един поглед към най-новите жанрове на браузърите, които измъчват - или в много случаи просто заяждане - уеб дизайнери и разработчици.

Оформление

Най-видимите грешки в браузъра са грешки в оформлението. Базата данни на Bugzilla на Mozilla за грешки има 10 раздела за проблеми с оформлението и това не включва проблеми с оформлението, категоризирани като свързани с DOM, CSS или Canvas. Най-важната работа на браузъра е да подрежда текста и изображенията, а да се оправят често е трудно.

Много грешки в оформлението могат да изглеждат малки до степен да са почти езотерични. Buggilla бъг 1303580, например, извиква Firefox за използване на курсив версия на шрифт, когато CSS таговете изискват косо. Може би само наркоман на шрифта би забелязал това. Междувременно бъг 1296269 на Bugzilla съобщава, че части от буквите в Comic Sans са отсечени, поне на Windows. Дизайнерите на шрифтове правят разлика и това е важно за тях. Когато не могат да получат точно правилния външен вид и усещане във всички браузъри, уеб дизайнерите могат да станат малко прекалено разочаровани.

Има стотици, хиляди, може би дори милиони от тези бъгове. В момента срещнахме проблеми с изображенията, които изчезват в нашия CMS редактор и обхващат тагове, които се появяват само в DOM.

Изтичане на памет

Често е трудно да се забележи изтичане на памет. По дефиниция те не променят никакви видими свойства. Уебсайтът е изобразен правилно, но браузърът не се почиства след факта. Няколко прекалено много пътувания до уебсайтове, които задействат изтичането и машината ви забавя до обхождане, защото цялата RAM е заключена и държи структура от данни, която никога няма да бъде преназначена. По този начин ОС трескаво сменя блокове виртуална памет на диск и вие прекарвате времето си в очакване. Най-добрият избор е да рестартирате машината си.

Подробностите за грешките при изтичане на памет могат да бъдат невероятно тайнствени и имаме късмет, че някои програмисти отделят време да ги поправят. Помислете за проблем 640578 от стека на браузъра Chronium. Промяната на част от DOM чрез бъркане в innerHTMLпаметта на свойствата изтича. Примерен парче код с плътно повтарящо се извикване requestAnimationFrameще дублира проблема. Има десетки въпроси като този.

Разбира се, не винаги грешката на браузъра е виновна. Например изданието на Chromium 640922 също подробно описва изтичане на памет и дава пример. По-нататъшният анализ обаче показва, че примерният код създава Date()обекти по пътя, за да тества времето и те вероятно са източникът на проблема.

Flash

Това е почти официално. Всички са забравили за прекрасните произведения на изкуството и уеб видеоклиповете, които Adobe Flash донесе в мрежата. Вместо това го обвиняваме за всички сривове, които може да са или не са били по негова вина. Сега официално се пенсионира, но не върви бързо. Дори някои от най-напредничавите компании, които прокарват уеб стандартите, все още имат Flash код на страниците си. Изненадан съм колко често намирам Flash код извън уебсайтовете на MySpace и GeoCities.

Докосвания и щраквания

Не е лесно да се жонглира с различните видове въвеждане, особено сега, когато таблетите и телефоните генерират докосвания, които могат или не могат да действат като щракване с мишката. Тогава не би трябвало да е изненадващо да откриете, че има много грешки в тази област. JavaScript рамката Bootstrap поддържа списък с най-вбесяващи грешки и едни от най-лошите попадения в тази категория.

Например, Safari понякога пропуска да почуквате с пръсти върху текста в маркера (151933). Понякога менютата не работят на iPad, защото браузърът е изместил правоъгълника за търсене на вход (150079). Понякога щраканията задействат странно мърдане в елемента - което може дори да изглежда сякаш е направено нарочно от остър дизайнер (158276). Всичко това води до объркване, когато текстът или изображенията на екрана не реагират по начина, по който очакваме.

Видео

Планът винаги е бил да се опрости доставката на аудио и видео чрез прехвърляне на отговорността в браузъра и извън света на приставките. Това елиминира проблемите с интерфейса, но не и всички проблеми. Списъкът с видео грешки е дълъг и много от тях са твърде видими. Вписването в Bugzilla 754753 описва „предимно червени и зелени петна, които съдържат различни изображения на призраци“, а в Bugzilla запис 1302991 „„ заеква “поради липса на по-добра дума.“

Някои от най-сложните проблеми възникват, тъй като браузърите интегрират различните механизми за криптиране, предназначени да предотвратят пиратството. Грешка 1304899 предполага, че Firefox не изтегля автоматично правилния механизъм за криптиране (EME) от Adobe. Вината на Firefox ли е? На Adobe? Или може би странен прокси?

Видео грешките ще продължат да доминират. Интегрирането на уеб видео с други форми на съдържание чрез добавяне на видео тагове към HTML5 отвори много нови възможности за дизайнерите, но всяка нова възможност означава нови възможности за грешки и несъответствия.

Зависване

Възможността уеб страницата да проследява мишката, движеща се през страницата, помага на уеб дизайнерите да дават на потребителите намеци за това какви функции могат да бъдат скрити зад изображение или дума. Уви, висящите събития не винаги се изкачват по веригата възможно най-бързо.

Например новият браузър на Microsoft Edge не скрива курсора, когато мишката се задържа над някои въведени елементи (817822). Понякога зависването не свършва (5381673). Понякога събитието при задържане е свързано с грешен елемент (7787318). Всичко това води до объркване и обезкуражава използването на доста спретнат ефект.

Зловреден софтуер

Въпреки че е изкушаващо да се възложи цялата вина за грешки в браузъра на разработчиците на браузъри, често е несправедливо. Много от проблемите са причинени от злонамерен софтуер, предназначен да се представя като полезни разширения или приставки. В много случаи зловредният софтуер прави нещо наистина полезно, докато тайно краде кликвания или търговия във фонов режим.

Проблемът е, че интерфейсът за разширение е доста мощен. Разширението може да вмъква произволни тагове и код във всички уебсайтове. В правилните ръце това е много готино, но е лесно да се види как новият код от разширението може да се натъкне на кода от уебсайта. Какво? Не искате да предефинирате поведението на $функцията?

Това не е толкова грешка, колкото дълбок, философски проблем с много готина функция. Но с голяма сила идва и голямата отговорност - може би по-голяма, отколкото всеки програмист на разширения може да събере. Най-добрият начин да разгледаме този проблем е да осъзнаем, че това е областта, в която ние, потребителите, имаме контрол. Можем да изключим разширенията и да ги ограничим само до няколко уебсайта, при които няма проблеми. API е твърде мощен за ежедневна употреба - толкова мощен, че е изкушаващо да се обадя на API за разширения най-големите грешки от всички. Но това би отрекло всичко, което прави за нас.

Свързани статии

  • Отвъд jQuery: Експертно ръководство за JavaScript рамки
  • Преглед: 7 IDE на JavaScript са подложени на тест
  • Изстрелване в HTML5: Как се измерват Chrome, Safari, Firefox, IE и Opera
  • Преглед: 13 primo Python уеб рамки
  • Силата на мързеливото програмиране
  • Изтегляне: Ръководство за кариерно развитие на разработчика
  • 7 лоши идеи за програмиране, които работят
  • 9 лоши навика за програмиране, които тайно обичаме
  • 21 горещи програмни тенденции - и 21 студени