我找到了很多关于如何在没有参数的情况下提取 URL 的答案。
如何重写地址栏中的 URL 而不会导致页面使用新 URL 重新加载?
shortURL = top.location.href.substring(0, top.location.href.indexOf('?'));
top.location.href = shortURL // Causes redirect
目标是提取Javascript中的参数,但不在地址栏中显示。
最佳答案
在支持 History 对象的现代浏览器中,您可以使用 history.replaceState()
或 history.pushState()
来更改当前 URL 而无需更改当前页面。您可以更改的内容有限制(例如,出于安全原因,您不能以这种方式更改域/来源)。
参见 here这些方法的总结。
浏览器历史记录是您在浏览 session 中所处位置的记录。 .replaceState()
允许您将历史列表中的当前项目替换为不同的项目。 .pushState()
向浏览器历史记录添加一个新项目,并且两者都更改浏览器 URL 栏中显示的 URL 而无需重新加载页面。您可以根据您希望浏览器的“后退”按钮针对此特定页面条目的行为来选择使用哪种方法。
注意:IE 10 及更高版本支持这些 API。
在不支持 history API 的旧浏览器版本中,您可以在不重新加载页面的情况下更改 URL 的唯一部分是末尾的哈希标记(#
符号之后的部分)网址。
关于javascript - 如何删除 URL 中的参数并将其显示在地址栏中而不会导致 Javascript 中的重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8510755/