У меня есть функция, которая добавляет элементы в мой URL без перезагрузки страницы. Я использую это в функции фильтра. Каждый раз, когда кто-то нажимает на элемент в фильтре, эта функция добавляет щелкнутый элемент в URL-адрес. Если вы снова нажмете тот же элемент, элемент снова исчезнет.Добавить элементы в URL без перезагрузки страницы (pushState)
function childboxes(MainElement, ChildElement){
var pathArray = window.location.pathname.split('/');
var extra = pathArray[2];
var clicked = "&"+MainElement+'='+ChildElement;
var re = new RegExp(clicked, 'g');
if(extra.match(re)){
//remove item from URL
var extra = extra.replace(clicked, "");
window.history.replaceState(null, null, extra);
}else{
//Add items in URL
window.history.pushState(null, null, extra+"&"+MainElement+'='+ChildElement);
}
}
Пример: http://www.domain.com/en/webshop&brand=18&category=shoes&product=test
И моя проблема, каждый добавленный элемент добавляет это: & бренд = 18 Как мы все знаем, первый параметр должен начинаться со знака «?» вместо «&».
Я понятия не имею, как убедиться, что первый элемент начинается с вопросительного знака.
Используя что-то еще, pushState
и replaceState
в порядке. Единственное, что я хочу, это то, что страница не перезагружается при обновлении URL-адреса.
Работает отлично подходит для первого обновления. Но это происходит сейчас: http://www.domain.com/ru/webshop?brand=18 - новый клик-- http://www.domain.com/ru/webshop?category=shoes Таким образом, он работает, но не добавляет новые элементы, щелкнутые по текущему URL. – Ruub
Попробуйте другое редактирование;) – Krzysiek
Извините, человек :( Он только обновляет ту же самую фигуру. Это та самая проблема, что у меня было все время. – Ruub