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.
Komentáře