我在现有的Web应用程序中使用Jquery Mobile。问题是,Jquery Mobile正在处理所有URL哈希。例如:
mysite.com/#foo
这里,哈希' foo'正在被发送到Jquery Mobile,它正在处理它,而不是让我的非jquery移动代码处理它。
是否可以阻止Jquery Mobile干扰url哈希?
答案 0 :(得分:5)
jQuery Mobile的默认行为是监听hashchange
事件并更新 URL hash 以便处理页面的历史,仅当 Ajax时已启用。
要处理页面链接,首次运行mobileinit
时应禁用changeHash
和hashListeningEnabled
属性。在加载jQuery Mobile库和.ready()
之前,此事件将触发;它应该用于更改框架的Global Settings。
<script src="jquery.js"></script>
<script>
$(document).on("mobileinit", function () {
$.extend( $.mobile, {
changePage.defaults.changeHash: false,
hashListeningEnabled: false
});
});
</script>
<script src="jquery.mobile.js"></script>
答案 1 :(得分:1)
您是否考虑过encode/decodeURIComponent
从JQM“隐藏”您的哈希值?
我没有直接使用它来散列,但是我需要自己的逻辑来处理这样的链接:
./foo/index.html#document/subfolder/items?sort=descending
JQM目前不允许这样做,因为哈希后的斜杠和查询参数被忽略(params)或被添加到文件夹路径(/foo/subfolder/items/
)。
然而这样做:
./foo/index.html#document%2Fsubfolder%2Fitems%3Fsort%3Ddescending
没有被JQM注意到。
也应该适用于哈希。
答案 2 :(得分:-1)
您应该使用data-url
。
<a data-identity='cat5' data-url='?cat=5' href='javascript:void(0);' >listitem text</a>
有点旧但仍应该工作