2

我正在尝试编写一个检测进程崩溃的 Chrome 扩展程序。

首先,我进入about:flagsChrome 页面并启用了“实验扩展 API”。

这是我写的扩展:

manifest.json

{
  "manifest_version": 2,
  "name": "CrashDetect",
  "description": "Detects crashes in processes.",
  "version": "1.0",
  "permissions": [
    "experimental","tabs"
  ],
  "background": {
    "scripts": ["background.js"]
  }
}

backround.js

chrome.experimental.processes.onExited.addListener(function(integer processId, integer  exitType, integerexitCode) {
  chrome.tabs.getCurrent(function(Tab tab) {
    chrome.tabs.update(tab.id, {url:"http:\\127.0.0.1\""});
  };)
});

然后我访问about://crash了 Chrome 的页面。但是onExited侦听器不执行。manifest.json我在or中做错什么了background.js吗?

4

1 回答 1

1

您的代码中有几个错误。首先你有函数声明中参数的类型,将其更改为:

function(processId, exitType, integerexitCode){

其次,你把};)而不是});. 尝试检查背景页面以查看语法错误。


好吧,由于我不熟悉这个特定的 API,在玩了一些之后,我发现如果我不包含onUpdated. 我真的怀疑这是预期的行为,我会检查是否有关于它的错误报告。现在只需执行以下操作即可使其正常工作:

chrome.experimental.processes.onUpdated.addListener(function(process){});

chrome.experimental.processes.onExited.addListener(function(processId, exitType, integerexitCode){
    chrome.tabs.query({active:true, currentWindow:true},function(tabs){
      chrome.tabs.update(tabs[0].id, {url:"http:\\127.0.0.1"});
    });
});

请注意,我确实将您换成了getCurrenta chrome.tabs.query,因为前者会给您一个错误。这确实会导致如果您关闭一个选项卡,下一个选项卡将被重定向的行为。也许您可以尝试过滤exitType而不包括正常退出。

于 2013-04-28T03:54:08.357 回答