我试图删除文档准备浏览器url中的“?”后的所有内容。

以下是我正在尝试的:

jQuery(document).ready(function($) {

var url = window.location.href;
    url = url.split('?')[0];
});

我可以这样做,并看到下面的工作:

jQuery(document).ready(function($) {

var url = window.location.href;
    alert(url.split('?')[0]);
});

当前回答

在Javascript中:

window.location.href =  window.location.href.split("?")[0]

其他回答

这些解决方案都不适合我,这里有一个兼容ie11的功能,也可以删除多个参数:

/**
* Removes URL parameters
* @param removeParams - param array
*/
function removeURLParameters(removeParams) {
  const deleteRegex = new RegExp(removeParams.join('=|') + '=')

  const params = location.search.slice(1).split('&')
  let search = []
  for (let i = 0; i < params.length; i++) if (deleteRegex.test(params[i]) === false) search.push(params[i])

  window.history.replaceState({}, document.title, location.pathname + (search.length ? '?' + search.join('&') : '') + location.hash)
}

removeURLParameters(['param1', 'param2'])

如果我在URL的末尾有一个特殊的标签,比如:http://domain.com/?tag=12345 下面是删除标签的代码,只要它出现在URL中:

<script>
// Remove URL Tag Parameter from Address Bar
if (window.parent.location.href.match(/tag=/)){
    if (typeof (history.pushState) != "undefined") {
        var obj = { Title: document.title, Url: window.parent.location.pathname };
        history.pushState(obj, obj.Title, obj.Url);
    } else {
        window.parent.location = window.parent.location.pathname;
    }
}
</script>

这就给出了从URL中删除一个或多个(或全部)参数的想法

window。location。pathname基本上得到'之前的所有内容?在url中。

Var pathname = window.location.pathname;//只返回路径 Var url = window.location.href;//返回完整URL

清除所有参数,不做页面刷新,如果你使用HTML5,那么你可以这样做:

历史。pushState({}, ", 'index.html');//将index.html替换为你的页面名称

这将在浏览器历史记录中添加一个条目。如果不想添加新条目而只想替换旧条目,还可以考虑replaceState。

这些都是误导,你永远不想添加到浏览器历史记录,除非你想在单页应用程序中进入不同的页面。如果你想在不改变页面的情况下删除参数,你必须使用:

window.history.replaceState(null, null, window.location.pathname);

运行这个js为我清除了当前url上的任何参数,而不刷新页面。

window.history.replaceState({}, document.title, location.protocol + '//' + location.host + location.pathname);