2011-08-23 118 views
0

我只是建立一个简单的Ajax网站,但运行到Safari和Chrome的一个问题。我只是创建一个简单的重定向,如果用户进入一个页面,即Webkit将“#”变成%23导致404错误?

"/blog" 

,他们将被重定向到

"/#/blog" 

代码:

url = window.location.pathname 

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

这是在Firefox伟大的工作但不幸的是WebKit的浏览器打开“#”变成“%23”,并给予404,例如:

"/%23/blog" 

我如何避免这种情况?

谢谢, 亚历克斯

回答

1

要设置路径,其中,根据定义,不包括散列。 Webkit正试图为你解决这个问题(Firefox只是更好地猜测你想要的东西)。试试这个:

window.location = '/#/blog'; 
+0

啊,完美!谢谢! –

2

pathname是指所有主机后,并查询字符串和哈希之前。考虑这个:

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

我不太确定哪个浏览器(S)正在执行JavaScript的规范正确,但WebKit的行为似乎是正确的我。

+0

但是当页面重新加载到“/”时它会删除散列吗? –

+0

@Alex不是铬...不知道其他浏览器,但一般的散列被保存 –

+0

用你的方法是从“/博客” =>“/博客#/博客” =>为“/” –