如何检测Chrome标签是否崩溃

时间:2014-07-04 03:40:18

标签: google-chrome google-chrome-extension

我正在编写用于记录Facebook使用情况的扩展程序。我发现即使facebook标签崩溃了计时器仍在计数,所以试图解决它。根据{{​​3}},似乎没有这样的事件。

是否有用于检测选项卡是否崩溃或崩溃事件的API?

2 个答案:

答案 0 :(得分:4)

渲染器崩溃时会触发chrome.processes.onExited事件(这是一个托管一个或多个标签的进程)。

此API仅供developer channel上的用户使用,因此,如果您希望为所有人广泛提供该扩展程序,则需要使用其他方法。您可以创建一个内容脚本,通过chrome.runtime.connect创建一个消息端口,并在onDisconnect事件中使用chrome.tabs.sendMessagechrome.tabs.executeScript来检查该标签是否仍然存在:如果选项卡不再存在,然后将设置chrome.runtime.lastError并指示通信错误。

答案 1 :(得分:0)

这是我设法检测到Chrome扩展程序中的页面崩溃的方法:

  • 让后台脚本每隔一定时间向内容脚本发送一次“检查”消息,并且内容脚本必须返回答案。
  • 如果页面崩溃,则返回后台脚本的响应将不确定,然后执行您需要做的事情。就我而言,刷新页面。
content_script:
...
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
    if (msg.action == 'page_check') {
        sendResponse('OK');
    }
});
background.js:
...
setInterval(() => {
  chrome.tabs.query({ url: `http://<your_page_defined_in_manifest>` }, function (tabs) {
    if (tabs.length > 0) {
      chrome.tabs.sendMessage(tabs[0].id, { action: "page_check" }, function (response) {
        if (!response) {
          chrome.tabs.reload(tabs[0].id);
        }
      });
    }
  });
}, 60000); //every minute
相关问题