【问题标题】:How to capture visibility change / app background event in js for a win8 metro app如何在 js 中为 win8 Metro 应用程序捕获可见性更改/应用程序背景事件
【发布时间】:2012-08-08 19:23:14
【问题描述】:

我问过这个关于如何在 Metro 应用程序中捕捉可见性变化的问题: How to tell if JS Windows8 metro app is visible or not

似乎有两个答案: 1) checkpoint 将在应用失去焦点后约 10 秒被调用,因为应用将被暂停

2) 页面可见性事件将起作用。

但是,当我在我的 default.js 中执行以下操作时,我看不到这些事情发生:

var onVisibilityChange = function (args) {
  console.log("Visibility changed. (this will never appear");
};
app.addEventListener("visibilitychange", onVisibilityChange);

// ...

app.oncheckpoint = function (args) {
  console.log("APP onCheckpoint (this also never appears");
};

有没有人有一个捕捉应用程序何时开始/停止可见的示例?

【问题讨论】:

    标签: javascript windows-8 microsoft-metro


    【解决方案1】:

    为了可见性,你需要使用文档:

    document.addEventListener("visibilitychange", function() {
        console.log("Visible: " + !document.hidden);
    })
    

    对于 Checkpoint,您的代码是正确的,但请注意:

    • 挂起/恢复不会在附加调试器的情况下自动发生。您需要使用 Visual Studio 中的工具栏来控制挂起状态。
    • 在应用程序恢复之前,您的 console.log 不会显示(不清楚原因,可能是一些缓存),但是您可以通过在该行上设置断点并使用 VS 工具栏按钮来验证它在暂停之前是否已执行

    【讨论】:

      【解决方案2】:

      一种解决方案是:

      var onVisibilityChange = function (args) {
        var state = document["visibilityState"];
        if (state == "visible")
        {
          console.log("COMING IN");
        }
        else if (state == "hidden") {
          console.log("AWAY");
        }
      };
      document.addEventListener("visibilitychange", onVisibilityChange, false);
      

      【讨论】:

        【解决方案3】:

        我推荐使用这个库:http://dueljs.studentivan.ru/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多