Странните API-та, които направиха възможен съвременния уеб (и какво ни учат за лошите решения)

Странните API-та, които направиха възможен съвременния уеб (и какво ни учат за лошите решения)

Юни 25, 2026 web-development browser-apis history-api frontend-development backward-compatibility single-page-applications javascript web-standards developer-experience

Защо pushState() има безполезен параметър?

Да си поиграем: кое е най-странното browser API, което познаваш?

Ако си frontend developer, вероятно веднага се сети за canPlayType(). Този метод връща три стойности: празен string ("не"), "probably" или "maybe". Неопределеност, увита в размита терминология — малко хаос.

Но има едно друго API, което показва истинското лице на уеба: History.pushState().

Когато го извикаш, трябва да подадеш три параметъра: state, title и url. Обектът state е логичен — позволява на приложението ти да възстанови данни при натискане на бутона "назад". Параметърът url също е полезен — обновява адресната лента без презареждане на страницата.

Ами този title? Първият параметър?

Пълен нула. Всички големи браузъри напълно го игнорират.

И така — защо изобщо съществува?

През 2008, когато History API се е проектирал, някой е решил, че браузърите трябва да позволяват на апликациите да задават персонално заглавие за всеки history entry. Идеята била: твоето SPA показва "Табло" в интерфейса, но в историята на браузъра стои "Аналитичен отчет".

Звучало разумно по онова време. Но браузърите бързо схванали проблема — какво става, когато потребител запише отметка и заглавието не съответства на това, което вижда в табовете си?

Вместо да се занимават с тази каша, браузърите просто пренебрегнали параметъра. Към онзи момент обаче хиляди сайтове вече били изградили апликациите си с три параметъра. Да го премахнат — значи да счупят работещи сайтове. Да го направят optional — ще объркат съществуващите извиквания на pushState(state, url).

Затова спецификацията направи нещо елегантно: преименува параметъра на unused и документира, че няма ефект.

Мръсното тайно на уеба

Ние даваме приоритет на обратната съвместимост пред почти всичко друго. Уебът ще се огъне ( понякога буквално), за да подсигури, че код от 2008 все още работи в днешните браузъри.

Тази философия е точно защото ние в NameOcean препоръчваме статични сайтове и доказани уеб технологии. Когато строиш нещо, което трябва да издържи — медийни архиви, документация, лендинг страници — стабилността на ванилните уеб технологии не е ограничение; това е предимство.

Същото важи и когато избираш domain registrar или хостинг доставчик. Търсиш компании, които разбират дългата игра. Уебът не отива никъде и технологиите, върху които строиш днес, трябва да работят и след десет години.

Урок за всички

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

Следващия път, когато се натъкнеш на странно API или deprecated параметър, помни: някой, някъде, е взел решение преди години и сега то е част от основите на уеба.

Уважавай странностите. Те държат нещата работещи.

Read in other languages:

RU EL CS UZ TR SV FI RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN