Добавить параметр на текущий URL-адрес
Я хочу, чтобы в углу сайта проекта была маленькая кнопка пасхального яйца. Когда вы нажимаете, он просто выводит строку на текущий url и перезагружает страницу.
Итак, если я включен:
http://test.com/projects/view/134
Нажата кнопка
Перезагрузка страницы:
http://test.com/projects/view/134?ts=true
Не знаю, как я могу это сделать, хотя.
Ответы
Ответ 1
попробуйте этот код,
var separator = (window.location.href.indexOf("?")===-1)?"?":"&";
window.location.href = window.location.href + separator + "ts=true";
редактирует:
чтобы избежать дублирования параметра или очень большой строки в вашем URL-адресе, вам нужно заменить старый параметр, который уже существует.
var url=window.location.href,
separator = (url.indexOf("?")===-1)?"?":"&",
newParam=separator + "ts=true";
newUrl=url.replace(newParam,"");
newUrl+=newParam;
window.location.href =newUrl;
Ответ 2
Вы можете назначить location.href значение, которое оно имеет в настоящее время, плюс новая строка:
(отредактирован, чтобы быть дружественным к существующим запросам)
$("#yourButtonId").click({
var loc = location.href;
if (loc.indexOf("?") === -1)
loc += "?";
else
loc += "&";
location.href = loc + "ts=true";
});
Или быть более кратким:
$("#yourButtonId").click({
var loc = location.href;
loc += loc.indexOf("?") === -1 ? "?" : "&";
location.href = loc + "ts=true";
});
Ответ 3
location.href += '?ts=true';
Просто так.
Ответ 4
Я обнаружил, что предыдущих ответов не хватает, и как таковой здесь метод, который лучше обрабатывает другие параметры в текущем запросе
appendToQueryString = function (param, val) {
var queryString = window.location.search.replace("?", "");
var parameterListRaw = queryString == "" ? [] : queryString.split("&");
var parameterList = {};
for (var i = 0; i < parameterListRaw.length; i++) {
var parameter = parameterListRaw[i].split("=");
parameterList[parameter[0]] = parameter[1];
}
parameterList[param] = val;
var newQueryString = "?";
for (var item in parameterList) {
if (parameterList.hasOwnProperty(item)) {
newQueryString += item + "=" + parameterList[item] + "&";
}
}
newQueryString = newQueryString.replace(/&$/, "");
return location.origin + location.pathname + newQueryString;
}
Вы должны использовать location.href = appendToQueryString(ts, true)
для фактической перезагрузки страницы.
Ответ 5
В полной мере использовать API-интерфейс location
DOM и считать в хеше:
location.protocol + '//' + location.pathname +
(location.search ? location.search + '&a=b' : '?a=b') +
location.hash;
Ответ 6
Использование:
Пример:
var url = new URL("http://foo.bar/?x=1&y=2");
// If your expected result is "http://foo.bar/?x=1&y=2&x=42"
url.searchParams.append('x', 42);
// If your expected result is "http://foo.bar/?x=42&y=2"
url.searchParams.set('x', 42);
// Build result
url.toString();
Ответ 7
Вы имеете в виду:
$(document).ready(function() {
$("#yourButtonId").click(function() {
var currentUrl = window.location.pathname + "?ts=true";
});
});
Ответ 8
Если вы хотите учесть потенциальное существование хеша "#" в URL-адресе, действуйте следующим образом:
var href = location.href;
var hasQuery = href.indexOf("?") + 1;
var hasHash = href.indexOf("#") + 1;
var appendix = (hasQuery ? "&" : "?") + "ts=true";
location.href = hasHash ? href.replace("#", appendix + "#") : href + appendix;
Ответ 9
См. документацию API истории:
https://developer.mozilla.org/en-US/docs/Web/API/History_API
Пример использования:
var obj = { Title: title, Url: url };
history.pushState(obj, obj.Title, obj.Url);
Ответ 10
Улучшение от ответа @Bobbzorzen, с возможностью удаления параметра, передавая его только имя:
function AlterQueryString(param, val) {
var queryString = window.location.search.replace("?", "");
var parameterListRaw = queryString == "" ? [] : queryString.split("&");
var parameterList = {};
for (var i = 0; i < parameterListRaw.length; i++) {
var parameter = parameterListRaw[i].split("=");
if (typeof val != 'undefined') {
parameterList[parameter[0]] = parameter[1];
} else if (param != parameter[0]) {
parameterList[parameter[0]] = parameter[1];
}
}
if (typeof val != 'undefined') {
parameterList[param] = val;
}
var newQueryString = Object.keys(parameterList).length > 0 ? "?" : "";
for (var item in parameterList) {
if (parameterList.hasOwnProperty(item)) {
newQueryString += item + "=" + parameterList[item] + "&";
}
}
newQueryString = newQueryString.replace(/&$/, "");
return location.origin + location.pathname + newQueryString;
}
gist: https://gist.github.com/envil/bc1832503bef55ffdabb0cde32bb06f1