Jquery mobile jQuery Mobile-使showPageLoadingMsg与pagebeforeshow或pagebeforeceate一起工作时出现问题

Jquery mobile jQuery Mobile-使showPageLoadingMsg与pagebeforeshow或pagebeforeceate一起工作时出现问题,jquery-mobile,Jquery Mobile,我已在第二周尝试解决如何正确显示加载消息的问题:-( 我只是很难让pagebeforecreate或pagebeforeshow事件触发$.mobile.showPageLoadingMsg() 这里有一个链接指向JSFIDLE上的示例: [http://jsfiddle.net/7fxQf/25/][1] 注意,JSFIDLE引用的是mobile 1.0b3库 下面是基本代码片段的示例,它应该可以工作,但不能: $('#mypageone').live('pagebeforecrea

我已在第二周尝试解决如何正确显示加载消息的问题:-(

我只是很难让pagebeforecreate或pagebeforeshow事件触发$.mobile.showPageLoadingMsg()

这里有一个链接指向JSFIDLE上的示例:

    [http://jsfiddle.net/7fxQf/25/][1]
注意,JSFIDLE引用的是mobile 1.0b3库

下面是基本代码片段的示例,它应该可以工作,但不能:

$('#mypageone').live('pagebeforecreate', function (event, ui) {
   alert('Just selected page one!');
   //HEY!!! the page load never pops up :-(
   $.mobile.loadingMessage = "this msg set on live pageshow from mypageone...";
   $.mobile.pageLoading();
   $.mobile.showPageLoadingMsg();
  calcLongList();  //simple list generation of a 1000 lines to screen
 //$.mobile.hidePageLoadingMsg();
});
我可以在页面实际加载时获得fire警报,但遗憾的是没有加载消息

…但是,如果更改为“pageshow”,则会显示加载消息,但当然,在生成列表所需的5-10秒之后:-(…这肯定不是我想要的

此外,我是否注释掉calcLongList函数也无关紧要……页面加载消息的行为是相同的:适用于“pageshow”……但不适用于“pagebeforeshow”或“pagebeforecreate”……我正在努力找出我可能做错了什么


如果您有任何建议或指导,我将不胜感激,提前谢谢您。我也有同样的问题。我不确定这是否是由相同的事情引起的,但我的页脚工具栏是内联的。因此,我滚动到页面底部,单击要加载的页面,然后在下一页触发加载消息(我正在做一些动态ajax内容加载)。看起来加载消息不在那里,但实际上确实在那里。它只是有一个大约1700px的“top”值,所以我看不到它。当我单击页面顶部的同一个页面的链接时,我可以很好地看到加载消息

看起来jQM正在尝试持久化加载消息或其他内容。不确定

所以..这是你的指导。除了做一些类似的事情之外,我还没有答案给你:

$(".ui-loader").css({"top": "400px"});
这可能就是我要做的。希望能有所帮助

编辑

这就是我最后不得不做的。经过测试,它可以工作。当我开始我的ajax调用时:

$(".ui-loader").css({"display": "block", "top": "252px !important" });
ajax调用完成时:

$(".ui-loader").css({ "display": "none" });
编辑2

抱歉,经过一些测试后,我发现您不希望使用.css()jQuery函数设置“display:block;”或“display:none;”。这将在元素本身上设置样式属性,并覆盖jQM希望执行的操作。请改为执行此操作--在启动调用时:

$(".ui-loader").css({ "top": "252px !important" });
$.mobile.showPageLoadingMsg();
装载完成后:

$.mobile.hidePageLoadingMsg();

当jQM显示加载指示器时,它会将一个类添加到html对象(.ui-loading)中,并使用$.mobile.hidePageLoadingMsg()删除该类。但在某些情况下,它不会将该类添加到html中(因为它无法-尝试手动添加该类)

Easy(稍微脏一点)修复程序是手动将类添加到主体,而不是html对象:

$('body').addClass('ui-loading');
要删除加载微调器,只需再次删除该类:

$('body').removeClass('ui-loading');

我做了一些测试,在我的项目中,如果我在显示等待微调器的代码中插入延迟或错误,它最终会成为一个计时问题。。 当我删除它并将日志与UI一起跟踪时,我可以看到需要花费时间的是UI呈现,而不是数据加载。 当做
Kim

如果您在显示文本消息时遇到问题,请尝试通过以下方式更改jquery mobile.js将文本设置为TRUE文件可见:

(function( $, window ) {
    // DEPRECATED
    // NOTE global mobile object settings
    $.extend( $.mobile, {
        // DEPRECATED Should the text be visble in the loading message?
        loadingMessageTextVisible: **undefined**,

        // DEPRECATED When the text is visible, what theme does the loading box use?
        loadingMessageTheme: undefined,

        // DEPRECATED default message setting
        loadingMessage: undefined,
致:


AXL

我试过这个,但它只显示加载符号,但没有加载数据。参考:只是想添加我的感谢,节省了我很多时间,效果很好。谢谢。我试过这个,但它只显示加载符号,但没有加载数据。参考:最好在单个代码示例中显示更改,而不强制读者加载通常比较10行代码,寻找5个字符的差异。我也遇到了这个问题,并将其报告给jquery移动团队:我尝试过这个,但它只显示加载符号,但没有加载数据。参考:
(function( $, window ) {
    // DEPRECATED
    // NOTE global mobile object settings
    $.extend( $.mobile, {
        // DEPRECATED Should the text be visble in the loading message?
        loadingMessageTextVisible: **true**,

        // DEPRECATED When the text is visible, what theme does the loading box use?
        loadingMessageTheme: undefined,

        // DEPRECATED default message setting
        loadingMessage: undefined,