我只是在构建一个简单的ajax网站,但在safari和chrome中遇到了问题。我只是创建一个简单的重定向,如果用户去一个页面,即
"/blog"
他们将被重定向到
"/#/blog"
代码:
url = window.location.pathname
if(url != "/") {
window.location.pathname = "/#" + url
}
这在FireFox中运行得很好,但不幸的是webkit浏览器正在将“#”变为“%23”并给出404,例如:
"/%23/blog"
我该如何防止这种情况?
谢谢, 亚历
答案 0 :(得分:2)
pathname
指的是主机之后,查询字符串和散列之前的所有内容。请考虑一下:
window.location.hash = window.location.pathname;
window.location.pathname = "/";
我不确定哪些浏览器正确实现了JavaScript规范,但WebKit的行为对我来说似乎是正确的。
答案 1 :(得分:1)
您正在设置路径名,根据定义,路径名不包含哈希值。 Webkit正在尝试为您解决这个问题(Firefox只是更好地猜测了您的需求)。试试这个:
window.location = '/#/blog';