Skryté vychytávky prohlížečů, které drží web pohromadě (a proč by vás měly zajímat)
Tajný trik webových prohlížečů
Představte si, že hlavní prohlížeče mají zabudovaný kód, který mění chování webů podle domény. Není to chyba. Není to trik. Je to záměrná funkce.
Na TikToku se váš prohlížeč chová jinak než na vašem blogu. Stejně tak na Netflixu, Instagramu, Amazon Prime Video nebo dokonce SeatGuru – tom nástroji na srovnávání sedadel v letadlech.
Toto není výmysl. Kód je veřejný. V Safari najdeš soubor Quirks.cpp s tisíci řádky úprav pro konkrétní domény. Firefox to ukáže na stránce about:compat, kde si můžeš tyto vychytávky zapnout nebo vypnout. Chrome se tváří, že nic takového neexistuje. To říká hodně o tržní síle.
Válka o kompatibilitu
Otevři Firefox a napiš do adresního řádku about:compat. Uvidíš seznam slavných "rozbitých" webů. Každý záznam je workaround pro jednu doménu – s vlastním CSS, úpravami JavaScriptu nebo falšováním user agent stringu.
Safari je ještě otevřenější. Prohlédni Quirks.cpp na GitHubu a čteš skutečnou historii webu. Ne takovou, jaká by měla být, ale jak funguje ve skutečnosti.
Vezmi Facebook, X (dříve Twitter) a Reddit. Kód obsahuje komentář:
"Facebook, X a Reddit pauzují video, které scrollovalo mimo viewport, i když je v PiP módu."
Safari tedy detekuje tyto domény a mění Picture-in-Picture. Velké firmy s obrovskými týmy by to mohly opravit. Místo toho Safari posílá workaround miliardám uživatelů.
Další komentář o SeatGuru:
"FIXME: Odstraň tuto vychytávku, pokud SeatGuru upraví svůj web."
Přeloženo: Kontaktovali jsme je, neodpověděli, tak jsme to zakódovali do enginu.
Jak Chrome ničí standardy
Teď to zložitnější. Chrome ovládá trh. Vývojáři psaní pro Chrome, protože tam je většina lidí. Weby fungují skvěle v Chromu. Když selžou v Safari nebo Firefoxu, uživatelé viní prohlížeč, ne web. Přecházejí na Chrome. Kruhy se stahují.
Horší je, že funkce Chromu se stávají standardy. Chrome je pustí, vývojáři je přijmou kvůli 65% podílu. Safari a Firefox buď kopírují (což trvá), nebo aplikují doménové quirks.
WebKit má user agent overrides – Safari se vydává za Chrome na Amazonu nebo streamovacích službách. Tyto weby detekují prohlížeč a dávají horší verzi non-Chrome. WebKit tedy lže.
Příklad kódu:
auto chromeUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"_s;
Safari s falešným Chrome user agentem. Firefox dělá totéž. Výsledek? Nekonečný cyklus: optimalizace pro Chrome, stížnosti na ostatní, dominance pokračuje.
Nejen vzhled: Hluboké změny
Nejde o maličkosti. Prohlížeče mění scrolling, touch eventy, viewport nebo MIME typy obrázků podle domény.
V posledních měsících v WebKit Quirks.cpp: Zillow měl špatně vycentrované plány bytů, TikTok ukazoval "upgraduj prohlížeč", Instagram Reels se resizeovaly divně, Netflix tlačítka rušila popovery, Twitch pauzoval PiP při změně tabů, Amazon Prime Video vůbec nefungoval.
Každý problém dostal doménový fix. Tisíce řádků kódu pro chyby velkých webů.
Co to znamená pro tvůj projekt
Stavíš webovou appku? Pravda je krutá: testuj napříč prohlížeči. Ne proto, že bys měl (měl bys), ale protože prohlížeče dělají výjimky pro konkurenty.
Web se mění z standardů na pragmatismus. Prohlížeče se stávají app-specific. Raději patchují weby, než čekají na opravy.
Pro malé týmy super zpráva – vaše chyby nebudou v Quirks.cpp. Ale rosteš? Pokud nefunguješ všude, můžeš se dostat na seznam.
Klíč: Standardy jsou důležité. Chrome rozhodnutí ovlivňují vše. Co Chrome pustí, to se testuje a udržuje.
Skutečná realita
Web není fér. Velcí dostávají speciální待遇 v motorech. Ale ukazuje to odolnost platformy – prohlížeče udrží web funkční za každou cenu.
Není to elegantní. Nestanovil to žádný výbor. Ale je to náš web. Rozumět rozdílu mezi ideálem a realitou je klíč k úspěchu.
Když web jede v Chromu a ne ve Firefoxu, vidíš následek. Lekce: Nepoužívej browser sniffing, Chrome chování není univerzální, testuj na reálných prohlížečích.
Tyto skryté quirks drží web pohromadě díky dobrým úmyslům, vynalézavosti a doménovým patchům.