Není JavaScript jako JavaScript
Jedna z našich aplikací je už dost stará - postavená na Java EE 6 a frontend dělaný v JSP se spoustou přidrátovaného JavaScriptu. Něco se vykonává v Javových “actions”, něco řeší až JS na zobrazené stránce. Kvůli historickým problémům se zobrazováním se navíc udělalo, že klient obaluje nějakou starou verzi Internet Exploreru a v něm se vykresluje obsah. Tato legacy záležitost se nechystá zemřít, a tak do ní občas přidáváme nové funkce.
Tuhle jsem potřeboval, aby se po kliknutí na tlačítko v detailu záznamu zobrazil v novém okně PDF dokument z interního archivu. Záznamy jsou několika typů a podle toho je potřeba pokaždé sáhnout na různá místa. Chtěl jsem to řešit hledáním společných částí (INFO, JRF a PD) v řetězci pro název typu, podle kterých se to dá poznat.
Google rychle odhalil, že JavaScript na to nabízí metodu .includes()
. Tak jsem si myslel, že mám hotovo.
Jenomže to nefungovalo.
Metoda .includes()
totiž přišla až s ES6 v roce 2015. Takže ačkoliv s ní už dávno nemá problém žádný z dnešních prohlížečů (obvyklý problém při tvorbě webů), náš speciální v aplikačním klientovi uvězněný starý IE nic takového nezná. Musel jsem se vrátit ke starému dobrému if (…) then {
s kombinací ||
řetězení podmínek.
Web Can I use…
Užitečným pomocníkem pro plánování kompatibility vašeho kódu může být například webová stránka https://caniuse.com/, která je zaměřena přesně na tuto problematiku. V přehledné grafice ihned uvidíte, zda a od které verze prohlížeče tu kterou funkcionalitu podporují. Různých prohlížečů je v nabídce hned sedmnáct! S tím už vás jen tak něco nepřekvapí.
Například pro mnou zmiňovanou metodu .includes()
to s podporou v prohlížečích vypadá TAKTO.
Poučení
Vždy si dobře rozmyslet, zda mi bude věc fungovat i na cílové platformě. Existují on-line nástroje, jak to zjistit.