O webu
Změna adresy v JS

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.

Změna adresy bez načtení jiné stránky

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:

  1. {} – objekt stavu, v tomto případě není potřeba
  2. titulek – nikde se nezobrazuje, může být prázdný
  3. 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.

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);
    }  
};

Samostatná ukázka

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.