3

基本上,我想在我自己的代码中处理哈希侦听和所有内容,但是我无法让 jQM 停止侦听哈希更改事件,并且通常对 URL 进行处理。我已经尝试过他们文档中的代码:

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

mobileinit 事件不会在第一个页面加载时被触发(即使它看起来应该如此),所以这对我不起作用。让代码执行的是将其放入 $(window).bind('load') 中,我可以在 Firebug 控制台中通过$.mobile.hashListeningEnabled === false这些值是否在其中正确设置来验证 - 但是,它们似乎没有做任何事情!例如,当我<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

1 回答 1

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>

您必须这样做的原因mobileinit是加载 jquery 移动文件时会触发该事件。

于 2012-07-12T14:12:47.130 回答