如何在js中为win8 metro应用程序捕获可见性更改/应用程序后台事件

时间:2012-08-08 19:23:14

标签: javascript windows-8 microsoft-metro

我问了一个关于如何在metro应用中捕获可见性更改的问题: How to tell if JS Windows8 metro app is visible or not

似乎有两个答案: 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");
};

有没有人有一个捕获应用程序启动/停止可见的时间的示例?

3 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分: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);

答案 2 :(得分:0)

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