如何做到修改 url 参数页面不刷新

HTML5 引入了 history.pushState() 和 history.replaceState() 方法,它们分别可以添加和修改历史记录条目。

let stateObj = {
    foo: "bar"
};

history.pushState(stateObj, "page 2", "bar.html");

假设当前页面为 foo.html ,执行上述代码后会变为 bar.html ,点击浏览器后退,会变为 foo.html ,但浏览器并不会刷新。 pushState() 需要三个参数: 一个状态对象, 一个标题 (目前被忽略), 和 (可选的) 一个 URL.让我们来解释下这三个参数详细内容:

  • 状态对象 — 状态对象 state 是一个 JavaScript 对象,通过 pushState () 创建新的历史记录条目。无论什么时候用户导航到新的状态, popstate 事件就会被触发,且该事件的 state 属性包含该历史记录条目状态对象的副本。

    状态对象可以是能被序列化的任何东西。原因在于 Firefox 将状态对象保存在用户的磁盘上,以便在用户重启浏览器时使用,我们规定了状态对象在序列化表示后有 640k 的大小限制。如果你给 pushState() 方法传了一个序列化后大于 640k 的状态对象,该方法会抛出异常。如果你需要更大的空间,建议使用 sessionStorage 以及 localStorage .

  • 标题 — Firefox 目前忽略这个参数,但未来可能会用到。传递一个空字符串在这里是安全的,而在将来这是不安全的。二选一的话,你可以为跳转的 state 传递一个短标题。

  • URL — 该参数定义了新的历史 URL 记录。注意,调用 pushState() 后浏览器并不会立即加载这个 URL,但可能会在稍后某些情况下加载这个 URL,比如在用户重新打开浏览器时。新 URL 不必须为绝对路径。如果新 URL 是相对路径,那么它将被作为相对于当前 URL 处理。新 URL 必须与当前 URL 同源,否则 pushState() 会抛出一个异常。该参数是可选的,缺省为当前 URL。

相关推荐

  1. 如何做到修改 url 参数页面刷新

    2024-06-15 13:46:04       27 阅读
  2. js如何实现修改URL参数刷新页面

    2024-06-15 13:46:04       35 阅读
  3. 如何做到页面实时刷新

    2024-06-15 13:46:04       53 阅读
  4. 删除url的search参数,避免页面刷新

    2024-06-15 13:46:04       37 阅读
  5. vue 修改页面 刷新页面 增删改 provide / inject

    2024-06-15 13:46:04       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-15 13:46:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-15 13:46:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-15 13:46:04       82 阅读
  4. Python语言-面向对象

    2024-06-15 13:46:04       91 阅读

热门阅读

  1. TypeScript中的数组类型

    2024-06-15 13:46:04       29 阅读
  2. 2024年计算机相关专业是否适合选择

    2024-06-15 13:46:04       34 阅读
  3. RedHat 9.3 一键安装 Oracle 11GR2 单机

    2024-06-15 13:46:04       30 阅读
  4. 孤立森林【python,机器学习,算法】

    2024-06-15 13:46:04       30 阅读
  5. PHP超级全局变量:功能、应用及最佳实践

    2024-06-15 13:46:04       33 阅读
  6. 适配器模式(设计模式)

    2024-06-15 13:46:04       26 阅读
  7. PostgreSQL基础知识

    2024-06-15 13:46:04       23 阅读