Webkit将“#”变成%23导致404错误?

时间:2011-08-23 00:25:24

标签: javascript ajax webkit http-status-code-404

我只是在构建一个简单的ajax网站,但在safari和chrome中遇到了问题。我只是创建一个简单的重定向,如果用户去一个页面,即

"/blog" 

他们将被重定向到

"/#/blog"

代码:

url = window.location.pathname

if(url != "/") {
   window.location.pathname = "/#" + url
}

这在FireFox中运行得很好,但不幸的是webkit浏览器正在将“#”变为“%23”并给出404,例如:

"/%23/blog"

我该如何防止这种情况?

谢谢, 亚历

2 个答案:

答案 0 :(得分:2)

pathname指的是主机之后,查询字符串和散列之前的所有内容。请考虑一下:

window.location.hash = window.location.pathname;
window.location.pathname = "/";

我不确定哪些浏览器正确实现了JavaScript规范,但WebKit的行为对我来说似乎是正确的。

答案 1 :(得分:1)

您正在设置路径名,根据定义,路径名不包含哈希值。 Webkit正在尝试为您解决这个问题(Firefox只是更好地猜测了您的需求)。试试这个:

window.location = '/#/blog';
相关问题