在 window.location.hash 中使用斜杠
Using slash in window.location.hash
如果我像这样更改哈希: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 来弥补这一点。
- window.location替换并传递URL历史记录条目中的变量
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- window.location使用jquery mobile实现chrome跳转
- Windows.Open 在 window.Location 工作时不起作用
- 如何将所有作业自定义到window.location.href
- window.location未刷新到现有URL
- 如果window.location.href.indexOf('player=1')添加样式
- 在$state.go之后执行$window.location.reload(true)
- javascript window.location在检查firebug时给了我一个错误的url路径
- angularjs 中 $window.location.reload() 和 $route.reload() 之间的区
- 在AJAX中使用window.location.replace'成功'回调
- IE中不支持JQuery window.location.hash
- PhoneGap如何在更改window.location/document.location后保持Javascript的
- 如何在更改window.location后停止执行
- 警报中的window.location必须重定向到上一页
- 如何在窗体操作或window.location(PHP)中使用数据切换
- 正在将目标添加到window.location
- window.location.htm无法在chrome扩展中工作
- 可以'当window.location.href时,无法从javascript获取post值
- 基于AJAX的网站中的JS window.location