在 window.location.hash 中使用斜杠

Using slash in window.location.hash

本文关键字:window location hash      更新时间:2023-09-26

如果我像这样更改哈希: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();
});

当它在断点 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或其他调试应用程序并测试链接。

我在使用历史记录时遇到了类似的问题.js。我认为这是该脚本的预期行为,因为它旨在使 URL 漂亮(非哈希),同时也不会重新加载页面。

我要在这里打赌。我很确定在哈希后使用斜杠是一个无效的 URL,Firefox 可能试图通过删除要制作的哈希是一个有效的 URL 来弥补这一点。