我一直试图从文档和示例中弄清楚这一点,但还不够(或者我可能遗漏了一些东西?)。
我想创建一个 devtools 面板,但我仍然想访问被检查窗口的 dom,就像我在内容脚本中一样。现在我的选择是在检查窗口的上下文中评估某些东西,但如果我可以避免它,我真的宁愿不这样做。如果我可以将内容脚本与我的 devtools 页面/脚本一起使用,那将是个好主意,但它似乎并没有像我期望的那样工作 - 我似乎无法使用背景页面在之间发送消息我的 devtools 页面和我的内容脚本。
此外,有没有办法让那些很酷的 dom 子树像在元素面板或控制台中一样显示,以及令人敬畏的悬停/突出显示功能?
更新
因此,我可以通过转发已检查窗口的选项卡 ID 并将其从我的背景页面中拉出,从面板页面连接到内容脚本。所以我必须这样做
// devtools.js
chrome.extension.sendMessage({
'to': chrome.devtools.inspectedWindow.tabId,
'message': 'whatever'
});
和
//background.js
chrome.extension.onMessage.addListener(function(message,sender,callback) {
message.from = sender.tab.id;
chrome.tabs.sendMessage(message.to, message, callback);
});
我的 content.js 脚本可以很好地接收到消息……我认为发件人的标签 ID 可以用来从内容脚本发回内容,但事实并非如此。后台脚本会收到消息,但 devtools 页面永远不会收到消息。
我在弄清楚如何正确调试 devtools 扩展方面也遇到了一些麻烦。内容脚本可以登录到页面的控制台,后台脚本可以登录到您可以从扩展页面检查的后台页面,但是 devtools 页面在哪里登录?