Javascript 删除所有具有历史推送状态的获取变量

Javascript remove all get variables with history push state

如何删除所有具有 javascript 历史推送状态的获取变量?

它应该在以下情况下工作:

http://example.com/slug1/slug2/index.php?myvar=1&myvar2=4
http://example.com/index.php?myvar=1&myvar2=4
http://example.com/slug1/slug2/?myvar=1&myvar2=4
http://example.com/slug2/?myvar=1&myvar2=4

之后应该是这样的:

http://example.com/slug1/slug2/index.php
http://example.com/index.php
http://example.com/slug1/slug2/
http://example.com/slug2/

也许像这样的函数:

function removeGetVariablesFromUrl() {
// Do stuff
}

不应该 return 更改的地址,它应该在不重新加载页面的情况下更改地址字段中的实际 url。

真的很简单:

function removeGetVariablesFromUrl(my_url) {
    my_url = "An url without get variables";
    history.pushState({}, 'The title', my_url);
}

javascript 中有一个动态的方法:

var url = window.location.href;

if(url.indexOf("?") != -1) {
    var resUrl = url.split("?");

    if(typeof window.history.pushState == 'function') {
        window.history.pushState({}, "Hide", resUrl[0]);
    }
}

这将带您进入当前 URL 并删除“?”之后的所有内容(包括“?”)符号(表示 $_GET 变量)