Google 应用程序脚本和 jquery 移动加载程序提供两个微调器

Google apps script and jquery mobile loader giving two spinners

让我先说我想要一个旋转器...

我不一定关心它是在页面首次启动时加载,还是稍后加载。我遇到的问题似乎也不在乎,因为我已经尝试了两种方法。

此时此刻,我没有在页面顶部声明它。因为我正在进行很多可视化工作,所以我启动它并立即将一些信息传递给微调器(它也启动它):

google.load('visualization', '1', {packages:['controls'], callback: initializeTables});

function initializeTables() {
  provideInfo("loading proficiencies (Step 1/12)");
  //etc... }

function provideInfo(text) {
  $.mobile.loading( "show", {
    text: text,
    textVisible: true
  });
}

那么开始...很好...是...

问题是实际上有 两个 微调器在启动时启动 - 一个在前面,一个在后面。因为前面的跟后面的稍微有点偏移,所以两个都能看到。

如果我稍后打电话:

$.mobile.loading( "hide" );

只隐藏前面的,不隐藏后面的

我发现我可以通过以下方式隐藏两者:

$(".ui-loader").hide();

太棒了。但是,我一开始不想看到两个。我试图弄清楚 jquery 手机 documentation page,但无济于事(它还提到了 "global method docs",但我没能找到 link):

//This does not work:
$( ".ui-loader" ).loader( "option", "text", "Loading Page..." );

//Nor does this:
$( "#notify_div" ).loader( "show" );
$( "#notify_div" ).loader( "option", "text", "Loading Page..." );

有谁知道如何将所有内容都放入一个微调器中,或者为什么要加载两个微调器?

遗憾的是,当前的 JQM 文档是针对尚未发布的 1.5 版本的。需要直接看1.4.5版本的源码。 有一个 JQM 默认值,它在加载页面时显示微调器。您可以在 JQM 初始化时覆盖此行为。

  <script type="application/javascript" src="js/jquery-2.2.4.js"></script>
  <script>
    $(document).on("mobileinit", function () {
      $.mobile.changePage.defaults.showLoadMsg = false;
    });
  </script>
  <script type="application/javascript" src="js/jquery.mobile-1.4.5.js"></script>

如果您查看 JQM 未压缩源代码的第 5847 行,您会发现所有可配置的设置。 此外,为了完整起见,还有另一个设置,您可以告诉 JQM 不显示已缓存页面的微调器。看看 JQM 未压缩源代码的第 5122 行:

    // This delay allows loads that pull from browser cache to
    // occur without showing the loading message.
    loadMsgDelay: 50

希望对您有所帮助。