在window.location.hash中使用斜杠

pio*_*Sko 5 javascript hash jquery-mobile

如果我像这样改变哈希:window.location.hash = "main/0/sub/1/na/false";.浏览器中的地址更改为http://mysite.com/#main/0/sub/1/na/false.Page的onhashchange函数触发,一切都像它应该的那样工作.

但是,在Firebug中我可以看到我也发送了一个请求:http://mysite.com/main/0/sub/1/na/false...没有哈希的URL,这导致控制台中的静默404.

当我调试时,我发现它恰好发生了window.location.hash.

但是,如果我像这样更改哈希值:window.location.hash = "main=0&sub=1&na=false";不会发送其他请求.

为什么在第一个示例中发送附加请求?

更新: 我注意到它发送请求window.location.hash之前和之后(在?期间)$(window).bind('hashchange').举例如果我有......

window.location.hash = 'main/0/sub/1/na/false'; // Breakpoint 1 in Firebug

$(window).bind('hashchange', function(e) {
    e.preventDefault();   // Breakpoint 2 in Firebug
    e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

当它在断点1处停止时,不发送任何请求.当它在断点2处停止时,请求已经发送.

我可以在Apache Tomcat中看到请求也正在发送.

我要补充一点,我已经插入了jQuery和jQuery Mobile.

更新2: 删除jQuery Mobile解决了这个问题.但是,我需要它:/

更新3

如果有人有兴趣:使用jQuery Mobile:http://jsfiddle.net/pioSko/hz5PU/3/

没有jQuery Mobile:http://jsfiddle.net/pioSko/hz5PU/4/

打开Firebug或其他调试应用程序并测试链接.

hob*_*key -4

我在这里打赌。我非常确定在哈希值后使用斜杠是无效的 URL,而 Firefox 可能会尝试通过删除哈希值来弥补这一点,以使其成为有效的 URL。

  • 哈希后的斜杠是完全有效且正常的。 (3认同)