如果我像这样更改哈希: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 without hash,这导致控制台中出现静默 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();
});
当它在断点 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 或其他调试应用程序并测试链接。