【问题标题】:Iron Router , change URL without changing browser historyIron Router ,更改 URL 而不更改浏览器历史记录
【发布时间】:2016-01-27 08:15:54
【问题描述】:

使用 Iron 路由器版本 0.9.4 如何在不更改浏览器历史记录的情况下更新 URL 查询参数?

我有一堆可以更新 URL 查询参数的选择框。在某些情况下,我想在不向 window.history 中添加额外条目的情况下更新 URL。很多模板都依赖于 Router.current().params 反应变量,所以我需要在更改路由时更新它。

【问题讨论】:

    标签: meteor iron-router


    【解决方案1】:

    Iron Router 在 Router.go 函数中有一个可选参数,您可以将其传入 {replaceState:true} 。这将更新 URL,而不会将 URL 更改存储在窗口的历史记录中。

    这适用于 Iron Router 0.9.4

    var path = Router.path('myRoute',{_id: myId}, {query: myParams});
    Router.go(path, {replaceState: true});
    

    如果您使用的是较新版本的 Iron Router,参数的顺序可能会发生一些变化,根据 github issue 这将是新的顺序:

    Router.go(path, {}, {replaceState:true});
    

    【讨论】:

      【解决方案2】:

      您可以使用原生 JavaScript:

      window.history.replaceState(yourNewUrl);
      

      这里有一些some documentation。由于它是一项现代功能,如果您想支持旧版浏览器,您可以use a polyfill

      【讨论】:

      • 谢谢,通常这会起作用,但在我的情况下,我有一些依赖于 Router.current().params 的模板,所以我还需要更新 Router 参数。
      猜你喜欢
      • 2021-05-02
      • 1970-01-01
      • 2014-01-23
      • 2015-11-15
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 2015-01-24
      相关资源
      最近更新 更多