Javascript Webkit turning“#&引用;进入%23导致404错误?
我只是在构建一个简单的ajax站点,但在safari和chrome中遇到了一个问题。我只是创建一个简单的重定向,如果用户转到一个页面,例如Javascript Webkit turning“#&引用;进入%23导致404错误?,javascript,ajax,webkit,http-status-code-404,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,例如
"/blog"
它们将被重定向到
"/#/blog"
代码:
url = window.location.pathname
if(url != "/") {
window.location.pathname = "/#" + url
}
这在FireFox中非常有效,但不幸的是,webkit浏览器正在将“#”变成“%23”,并给出404,例如:
"/%23/blog"
我怎样才能防止这种情况
谢谢,
Alex路径名指主机之后、查询字符串和哈希之前的所有内容。考虑这个问题:
window.location.hash = window.location.pathname;
window.location.pathname = "/";
我不确定哪些浏览器正确地实现了JavaScript规范,但WebKit的行为在我看来似乎是正确的。
路径名
指主机之后、查询字符串和哈希之前的所有内容。考虑这个问题:
window.location.hash = window.location.pathname;
window.location.pathname = "/";
我不确定哪些浏览器正确地实现了JavaScript规范,但WebKit的行为在我看来似乎是正确的。您正在设置路径名,根据定义,路径名不包括哈希。Webkit正试图为您解决这个问题(Firefox只是更好地猜测了您想要什么)。试试这个:
window.location = '/#/blog';
您正在设置路径名,根据定义,路径名不包括散列。Webkit正试图为您解决这个问题(Firefox只是更好地猜测了您想要什么)。试试这个:
window.location = '/#/blog';
但当页面重新加载到“/”时,肯定会删除散列?@Alex不在chromium上。。。不确定其他浏览器的情况,但通常散列会保留您的方法,它从“/blog”=>“/blog#/blog”=>到“/”,实际上可能是我的一些页面逻辑造成的!如果您不更改路径名,它将不会重新加载。但当页面重新加载到“/”时,肯定会删除哈希?@Alex不在chromium上。。。不确定其他浏览器的情况,但通常散列会保留您的方法,它从“/blog”=>“/blog#/blog”=>到“/”,实际上可能是我的一些页面逻辑造成的!如果不更改路径名,它将不会重新加载。