0

我正在使用 Jquery mobile 1.1,我想在使用骨干路由器加载页面之前显示加载消息。移动初始化代码是

$(document).bind("mobileinit", function() {
$.mobile.ajaxEnabled = false;
$.mobile.linkBindingEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;

$.mobile.showPageLoadingMsg="loading";}

但未显示加载消息。有什么建议么?

4

2 回答 2

1

通常的方法对您没有帮助,因为 jQuery Mobile 仅当页面 i 加载到 DOM 超过 10 毫秒时才会显示加载器,即使在页面加载到 DOM 时它也会隐藏。通常,如果页面很复杂,这将在页面成功显示之前很久。

但是您可以手动显示/隐藏它。

这是一个工作示例:http: //jsfiddle.net/Gajotres/qx7Yn/

$(document).on('pagebeforecreate', '[data-role="page"]', function(){     
    var interval = setInterval(function(){
        $.mobile.loading('show');
        clearInterval(interval);
    },1);    
});

$(document).on('pageshow', '[data-role="page"]', function(){  
    var interval = setInterval(function(){
        //$.mobile.loading('hide');
        clearInterval(interval);
    },1);      
});

基本上,您要做的就是在即将创建页面时显示加载器并在 pageshow 事件期间隐藏它。就我而言,这一行:

//$.mobile.loading('hide');

被评论是因为页面很简单,它会立即加载。也不要忘记使用这个:

$.mobile.loader.prototype.options.text = "loading";
$.mobile.loader.prototype.options.textVisible = true;
$.mobile.loader.prototype.options.theme = "a";

您需要的一切都在我的 jsFiddle 示例中。

编辑 :

此示例与 jQuery Mobile 1.1 兼容。:http: //jsfiddle.net/Gajotres/qx7Yn/

于 2013-05-02T12:01:24.627 回答
0

感谢@Gajotres 的回答,但是因为我使用的是 jquery-mobile-1.1,所以我使用

$(document).on('pagebeforecreate', '[data-role="page"]', function(){     
var interval = setInterval(function(){
    $.mobile.showPageLoadingMsg('show');
    clearInterval(interval);
},1);     }); $(document).on('pageshow', '[data-role="page"]', function(){  
var interval = setInterval(function(){
    $.mobile.showPageLoadingMsg('show');
    clearInterval(interval);
},1);       });

但加载消息没有消失:(

于 2013-05-02T12:23:32.080 回答