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。