在Chrome扩展程序内容脚本中使用`chrome.devtools.panels.create()`

4

我在一个内容脚本中有这个代码:

  chrome.devtools.panels.create('Suman Extension Page Controls',
  'icon.png',
  'devtools-panel.html',
  function (panel) {
    console.log('my devtools panel.');

  });

然而,我遇到了这个错误:
Uncaught TypeError: Cannot read property 'panels' of undefined
我尝试在我的manifest.json文件中将“devtools”添加到权限数组中,但这是不允许的。
有没有办法从内容脚本中使用devtools API?如何在随机网页上动态添加面板到DevTools?

1
请注意,我不想在我的扩展中添加DevTools面板,我希望该面板可以在几乎任何给定的网页/ URL上为最终用户提供。 - Alexander Mills
1个回答

2

文档中可以看出,在内容脚本中使用 chrome.devtools.* API 模块是不正确的:

chrome.devtools.* API 模块仅适用于在 DevTools 窗口中加载的页面。内容脚本和其他扩展程序页面没有这些API。

您需要创建一个单独的 html 文件,然后将其设置为您的 manifest 中的 devtools_page 属性。之后,您可以在此 html 文件中加载您的脚本并创建面板。

一个很好的例子是 React 开发工具 扩展。


谢谢Sergey - 我看了React示例 - 那么devtools_page属性将会在每个页面上添加这个开发工具面板吗?理想情况下,我只想为某些页面更改开发工具。 - Alexander Mills
好的,那没用...所以我猜chrome.devtools只在由devtools_page加载的脚本中可用... - Alexander Mills
1
是的,chrome.devtools 只能从 devtools_page 页面中使用。 - Sergii Rudenko
1
现在这是唯一的方法 :( 从性能角度来看,对于每个Chrome标签页都进行端口/连接将不会有问题。 - Sergii Rudenko
是的,它说:“为您的扩展程序清单中指定的每个 DevTools 窗口创建一个 devtools_page 实例。”因此不是针对每个页面,而是仅针对打开了 devtools 的页面... - Alexander Mills
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接