基本上,我想在我自己的代码中处理哈希监听和所有内容,但是我无法让jQM停止监听哈希更改事件并且通常无法使用URL。我已经尝试了他们文档中的代码:
$(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
,则任何支持的浏览器中的网址栏都会显示http://<mysite>/somethingelse.html
,而不是预期的http://<mysite>/index.html#somethingelse.html
。< / p>
基本上,我想要的是jQuery Mobile处理页面布局和DOM操作,绝对没有别的。这可能吗?
答案 0 :(得分: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移动文件时会触发mobileinit
事件。