我开发了Chrome扩展程序。

我尝试将事件监听器添加到chrome.runtime.onSuspend,但从未调用过它。

我使用以下代码,但是localStorage未被修改,并且控制台中也没有日志消息(我使用--enable-logging --v=1将日志消息保存到文件中)。

chrome.runtime.onSuspend.addListener(function() {
  localStorage["suspend"] = new Date();
  console.log("On suspend");
});

测试框:带有Chrome 28.0.1500.72 m的WinXP SP3 x86

我创建了测试扩展程序,以轻松重现此问题:
manifest.json
{
  "manifest_version": 2,

  "name": "Chrome onSuspend test",
  "version": "1.0",

  "background": {
    "scripts": ["background.js"] }
}
background.js
chrome.runtime.onSuspend.addListener(function() {
  localStorage["suspend"] = new Date();
  console.log("On suspend");
});

最佳答案

仅当事件页面变为非 Activity 状态时,才会触发onSuspend事件。

因为您没有在 list 文件中声明persistent: false,所以后台页面是background page,而不是event page。因此,页面将永远不会变得不 Activity ,并且onSuspend事件将永远不会被触发。

如果您想在 Activity 页面中切换背景页面,请使用

...
    "background": {
        "scripts": ["background.js"],
        "persistent": false
    }
}

10-04 11:29
查看更多