我有两个同时发生的骨干模型更改事件:
change:path
替换当前的历史状态并修补一些链接
在页面上,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");
有没有办法让它与hash一起使用?我知道我可以添加一些时间戳来使新网址完全不同,但我希望网址干净。
答案 0 :(得分:1)
我设法以一种不那么干净的方式解决它,但我仍然在寻找更好的解决方案:
// 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);
答案 1 :(得分:1)
看起来最好的方法是不使用replace
方法,而只是将位置设置为整体。像这样:
window.location.href = 'http://www.sitename.com/new_path#hash';