
Změna adresy JavaScriptem
JavaScript může měnit URL. Jak a v jakých případech toho využívat.
Prohlížeče podporující stav (state) v objektu window.history dokáží měnit tvar URL bez nutnosti přecházet na jinou stránku nebo vůbec dělat cokoliv dalšího.

Tuto funkci podporuje IE 10, Firefox 4, Chrome 5, Opera 11.5 a novější. Naopak podpora chybí ještě i v Opeře Mini 8.
U AJAXových aplikací jde díky tomu zajistit, že se dá na aktuální stránku odkázat a ta se může přímo načíst ze serveru. Zároveň to umožňuje plnohodnotnou funkci tlačítka Zpět.
Více v článku:
Změna URL
Tento článek se zabývá samostatnou změnou URL bez dalších navazujících činností. K prosté změně se hodí použít metodu replaceState – změna adresy se potom neuloží do historie.
Použití je prosté:
history.replaceState(
{},
'',
'nova-url'
);
Metoda replaceState má tři parametry:
{}– objekt stavu, v tomto případě není potřeba- titulek – nikde se nezobrazuje, může být prázdný
- adresa – adresa, která nahradí tu stávající
Vyzkoušejte:
Využití
Měnit takto URL se hodí třeba k jejich čištění různých sledovacích parametrů. Případně pro přidávání parametrů jiných.
Odstranění UTM parametrů z URL
Asi nejčastěji se používají UTM parametry.
- Zaklik.cz: Tagování zdroje UTM parametry
Jedná se o řetězce typu:
?utm_source=rss&utm_medium=feed&utm_campaign=nazev
Případně místo otazníku může být UTM část adresy za mřížkou:
#utm_source=rss&utm_medium=feed&utm_campaign=nazev
Pro odstranění UTM trackovacích parametrů poslouží následující funkce:
var odstranitUtm = function() {
var puvodniAdresa = window.location + "";
var bezUtm = puvodniAdresa.replace(/([#&?])utm([_a-z0-9\.=]+)/ig, "");
if (puvodniAdresa !== bezUtm && history.replaceState) {
history.replaceState({}, '', bezUtm);
}
};
Při používání Google Analytics se hodí funkci pro odstranění parametrů zavolat až jako callback po započítání návštěvy:
Tedy rozšířit standardní:
ga('send', 'pageview');
O zavolání funkce odstranitUtm.
ga('send', 'pageview', {'hitCallback': odstranitUtm});
Sledovací parametry se tak z URL odstraní až po jejich započtení do Google Analytics.
Související články
JavaScript null a undefined
Rozdíly mezi null a undefined v JavaScriptu, kdy je používat a jak se vyhnout běžným chybám.
Sleep v JavaScriptu
Jak implementovat sleep/delay funkcionalitu v JavaScriptu pomocí Promise a async/await
JavaScript Battery API
Jak v JS zjistit stav baterie, co dnes funguje a kdy API nepoužívat.