【问题标题】:Jquery mobile - onhashchange issueJquery mobile - onhashchange 问题
【发布时间】:2011-11-16 20:59:54
【问题描述】:

我在我的应用程序中使用$.mobile。我必须创建自己的路由系统。 我在hashchange 上绑定观察者,然后从location.hash 中提取有趣的数据。 我有一个问题 - 如果 location.hash 有斜杠,jQuery.mobile 会从 location.hash 中删除井号(例如,从 'lalal/#controller/action/param''lalal/controller/action/param'$.mobile 在黄色框中表示 Error Loading Page

我首先尝试取消绑定现有的“hashchange”,但页面不会自动加载(我需要的)。

如何防止散列的变化,但 jQuery 仍然必须自动加载页面(例如,通过在具有 data-role='page' 的元素中声明的 ID)? .下面是我的路由器类的片段:(Router.load 不会改变location.hash

__construct: function() {   

        var that = this; 
        $( window ).bind( "hashchange" , function( e ) {
            //e.stopImmediatePropagation()
            that.load( this.location.hash  ); 

        });  
    }

【问题讨论】:

  • 您运行的是什么版本的 jQM 和 jQuery?就像在 RC1 和 RC2 中一样,那里有一些对 hashchange 的错误修复
  • 你是指最新的jQuery 1.7 和jQueryMobile RC3 吗?需要注意的是 jQM 还不支持 jQuery 1.7,所以 1.6.4 是你应该运行的版本

标签: javascript jquery jquery-mobile hashchange


【解决方案1】:

我相信您正在与 Beta 3 中添加的 jQuery Mobile 中的“pushState”插件作斗争(我相信)。您可以使用以下代码禁用此插件(在包含 jQuery Mobile JavaScript 文件之前使用):

$(document).on('mobileinit', function () {
    $.mobile.pushStateEnabled = false;
});

在此处查看文档(注意“pushState 插件”部分):http://jquerymobile.com/demos/1.0rc3/docs/pages/page-navmodel.html

【讨论】:

  • 禁用 pushStateEnabled 使哈希符号不再从地址栏中消失 - 好的,但 $.mobile 仍然尝试使用 ajax 加载页面(仅当哈希包含斜杠时) - 即使 $.mobile.ajaxEnabled = false 也是如此;当然状态为 404,jqm 触发页面加载错误
【解决方案2】:

在你的 html 中包含 jquery 和 before 包含 jquery.mobile-1.x.y.js 添加:

<script>
$(document).bind("mobileinit", function(){
        $.mobile.pushStateEnabled = false;
        $.mobile.ajaxEnabled = false;
        $.mobile.hashListeningEnabled = false;
});
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 2014-04-13
    • 2011-11-02
    • 2012-03-18
    相关资源
    最近更新 更多