将历史状态替换为同一路径后,Javascript 使用哈希重定向

标签 javascript redirect backbone.js

我有两个 Backbone 模型更改事件同时发生:

  1. change:path 替换当前历史状态并修补一些链接 在页面上,
  2. change:language 应该重定向到带有附加散列的新路径

重定向应该取代替换状态,但如果提供哈希则不会发生这种情况。我正在尝试让它在 Chrome 中运行。

此代码不重定向:

// in change:path event
window.history.replaceState({state: 1}, "", "/new_path");

// in change:language event
window.location.replace("/new_path#hash");

但没有散列它按预期工作:

// in change:path event
window.history.replaceState({state: 1}, "", "/new_path");

// in change:language event
window.location.replace("/new_path");

有什么方法可以让它与哈希一起工作吗?我知道我可以添加一些时间戳以使新的 url 完全不同,但我希望 url 是干净的。

最佳答案

我已经设法以一种不太干净的方式解决了它,但我仍在寻找更好的解决方案:

// change:path event
window.history.replaceState({state: 1}, "", "/new_path");

// change:language event
setTimeout(function(){
  // make sure it runs after replaceState in change:path
  window.history.replaceState({}, "", "/"); 
  window.location.replace("/new_path#hash");
}, 10);

关于将历史状态替换为同一路径后,Javascript 使用哈希重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13160438/

相关文章:

javascript - 如何创建具有锁定 y 轴的水平滚动 Chart.js 折线图?

javascript - 如果另一个元素为空,如何动态隐藏 html 元素

php header ("location: test.php") 不工作。但是java脚本重定向工作

http - 如何将裸域 "example.com"重定向到 "https://example.com"?

javascript - Backbone.Marionette 嵌套的 ItemView 要么不呈现要么呈现 "blank" View /模板

backbone.js - 哪个前端框架用于使用 json 模式描述的资源?

javascript - 为什么在没有单击按钮的情况下加载页面时会触发我的脚本函数?

Windows 完全重定向键盘输入

node.js - 使用 node.js 改造现有的 Backbone 应用程序以进行服务器端渲染?

python - 使用 Python 请求的重定向错误太多