如何在 js 中捕获 win8 Metro 应用的可见性更改/应用后台事件



我问了这个问题,关于如何在地铁应用程序中捕获可见性变化:如何判断 JS Windows8 地铁应用程序是否可见

似乎有两个答案:1) 在应用失去焦点后大约 10 秒会调用检查点,因为应用将被挂起

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

但是,当我默认执行以下操作时.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");
};

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

为了获得可见性,您需要使用文档:

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

对于检查点,您的代码是正确的,但请注意:

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

一种解决方案是:

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);

我建议使用这个库:http://dueljs.studentivan.ru/

最新更新