Подтвердить что ты не робот

Добавить параметр на текущий URL-адрес

Я хочу, чтобы в углу сайта проекта была маленькая кнопка пасхального яйца. Когда вы нажимаете, он просто выводит строку на текущий url и перезагружает страницу.

Итак, если я включен: http://test.com/projects/view/134

Нажата кнопка

Перезагрузка страницы: http://test.com/projects/view/134?ts=true

Не знаю, как я могу это сделать, хотя.

4b9b3361

Ответ 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;

Ответ 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;

Ответ 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