如果我这样更改哈希值:
但是,在Firebug中,我可以看到我还发送了一个请求:
当我调试时,我发现它发生在
但是,如果我这样更改哈希值:
为什么第一个示例会发送其他请求?
更新: 我注意到它会在
当它停在断点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或其他调试应用程序并测试链接。
window.location.hash = "main/0/sub/1/na/false";
。
浏览器中的地址将更改为http://mysite.com/#main/0/sub/1/na/false
。
页面的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();
});
当它停在断点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或其他调试应用程序并测试链接。
window.location.hash =“main/0/sub/1/na/false”
,但在任意页面上没有观察到网络请求。 - lanzz