0

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

似乎有两个答案:1)应用程序失去焦点后约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");
};

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

4

3 回答 3

6

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

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

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

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

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

于 2015-01-12T21:32:15.703 回答
0

一种解决方案是:

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);
于 2012-08-08T20:25:21.297 回答