从不调用Chrome扩展程序onSuspend

时间:2013-07-23 10:52:53

标签: google-chrome google-chrome-extension

我开发Chrome扩展程序。

我尝试将事件监听器添加到chrome.runtime.onSuspend,但它永远不会被调用。

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

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

测试盒:WinXP SP3 x86,Chrome 28.0.1500.72 m

我创建了测试扩展程序以轻松重现此问题:

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

1 个答案:

答案 0 :(得分:9)

onSuspend事件仅在事件页面变为非活动状态时触发。

由于您未在清单文件中声明persistent: false,因此背景页面为background page,而非event page。因此,页面永远不会变为非活动状态,并且永远不会触发onSuspend事件。

如果您想在活动页面中翻开背景页面,请使用

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