javascript - 如何删除 URL 中的参数并将其显示在地址栏中而不会导致 Javascript 中的重定向?

标签 javascript url parameters url-rewriting address-bar

我找到了很多关于如何在没有参数的情况下提取 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/

相关文章:

javascript - 新的offline_access token 使用javascript实现Facebook应用程序

javascript - 使用 Chart.js 从世界银行 javascript JSON 下载中获取变化统计数据

php - 尾部斜杠 : yes or no?

php - 传递 NULL 参数与不传递参数完全相同

c++ - 在 C++ 中运行带参数的可执行文件并获取返回值;

javascript - 在 Dojo 中创建自定义小部件时,在新小部件中调用函数时出错?

javascript - 可以使用 Google 代码为最终用户托管 javascript 应用程序吗?

javascript - 如何使用 javascript 更改 URL,以便我可以链接到该 URL

facebook - 从页面访问 "Page Tab Edit URL"

Powershell "special"开关参数