Променете URL адреса, без да е необходимо да презареждате страницата

Опитвам се да променя URL адреса на страница, без да е необходимо да презареждам страницата. Ако опитам това в конзолата, URL адресът се променя:

if (localStorage.getItem('product') !== null) {
    storedVariable = localStorage.getItem('product');
    url = window.location.href;
    url += '?product=' + storedVariable;
}
window.history.pushState("", "", url);

Въпреки това, когато поставя този код в мениджъра на маркери на Google, URL адресът на моята страница е стандартният. Как мога да го поправя?


person Piggy    schedule 14.10.2015    source източник
comment
stackoverflow.com/a/12446376   -  person Piggy    schedule 14.10.2015


Отговори (1)


Може би е свързано с: mdn History_API

pushState() приема три параметъра: обект на състояние, заглавие (което в момента се игнорира) и (по избор) URL. Нека разгледаме всеки от тези три параметъра по-подробно:

  • state object — State object е JavaScript обект, който е свързан с новия запис в историята, създаден от pushState(). Всеки път, когато потребителят премине към новото състояние, се задейства събитие popstate и свойството състояние на събитието съдържа копие на обекта състояние на записа в хронологията.

    Обектът на състоянието може да бъде всичко, което може да бъде сериализирано. Тъй като Firefox записва обекти на състояние на диска на потребителя, така че да могат да бъдат възстановени, след като потребителят рестартира браузъра, ние налагаме ограничение за размера от 640k знака върху сериализираното представяне на обект на състояние. Ако подадете обект на състояние, чието сериализирано представяне е по-голямо от това, към pushState(), методът ще хвърли изключение. Ако имате нужда от повече пространство от това, препоръчваме ви да използвате sessionStorage и/или localStorage.

person Anonymous0day    schedule 14.10.2015
comment
Съжалявам, не знам мениджъра на маркери на Google, но може би като му предоставя директно URL адреса? - person Anonymous0day; 14.10.2015