2012-07-12 28 views
3

基本上,我想处理哈希监听以及我自己代码中的所有内容,但是我无法让jQM停止监听哈希变化事件,并且通常不会使用URL。我从他们的文档试图代码:如何阻止jQuery Mobile使用window.location执行任何操作?

$(document).bind('mobileinit', function() { 
    $.extend($.mobile, { 
     hashListeningEnabled: false, 
     pushStateEnabled: false, 
     ajaxEnabled: false, 
     linkBindingEnabled: false 
    }); 
}); 

的mobileinit事件就都不曾在第一页负载点火虽然(即使它看起来像它应该),这样就不会为我工作。让代码执行的代码是将它放在$(window).bind('load')中,我可以通过$.mobile.hashListeningEnabled === false验证Firebug控制台中的值是否正确设置 - 但是,它们看起来并不像做任何事!当我在地址栏中输入<mysite>/index.html时,它会加载我的默认页面,但是如果我输入<mysite>/index.html#anything它只显示jQM加载微调器并且从不加载任何东西(我推测它是因为它正在寻找文件内有data-role=anything的页面,是它的默认功能)。此外,pushStateEnabled覆盖显然无法正常工作,因为如果我运行window.location.hash = /somethingelse.html,则任何受支持的浏览器中的URL栏将显示http://<mysite>/somethingelse.html,而不是预期的http://<mysite>/index.html#somethingelse.html

基本上,我想要的是jQuery Mobile来处理页面布局和DOM操作,绝对没有别的。这可能吗?

回答

4

我不知道这些是否设置正确的属性(没有检查文档),但我之前有过这个问题。为了解决这个问题,你需要你包括脚本,以便在此之前,以绑定事件:

<script type="text/javascript"> 
    $(document).bind('mobileinit', function() { 
     $.extend($.mobile, { 
      hashListeningEnabled: false, 
      pushStateEnabled: false, 
      ajaxEnabled: false, 
      linkBindingEnabled: false 
     }); 
    }); 
</script> 
<script src="//code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script> 

必须这样做的原因是,当jQuery Mobile的文件被加载mobileinit事件触发。

+0

谢谢,这样做!事实证明,它确实表明,在文档中,我想我必须以某种方式掠过它。 – jcsmnt0 2012-07-12 14:44:34

+0

您的欢迎,我花了一段时间才弄清楚了第一个复飞。 – 2012-07-12 15:23:17

相关问题