防止Jquery Mobile处理URL哈希?

时间:2014-06-17 20:34:41

标签: javascript jquery jquery-mobile

我在现有的Web应用程序中使用Jquery Mobile。问题是,Jquery Mobile正在处理所有URL哈希。例如:

mysite.com/#foo

这里,哈希' foo'正在被发送到Jquery Mobile,它正在处理它,而不是让我的非jquery移动代码处理它。

是否可以阻止Jquery Mobile干扰url哈希?

3 个答案:

答案 0 :(得分:5)

jQuery Mobile的默认行为是监听hashchange事件并更新 URL hash 以便处理页面的历史,仅当 Ajax时已启用。

要处理页面链接,首次运行mobileinit时应禁用changeHashhashListeningEnabled属性。在加载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

See this article

<a data-identity='cat5' data-url='?cat=5' href='javascript:void(0);' >listitem text</a>  

有点旧但仍应该工作