我正在尝试访问我正在构建的扩展的 $0 (这是 chrome 开发人员工具中最后选择的元素)。
有什么办法吗?
更多信息: 该扩展是一个页面操作扩展。它有几个功能,我想有一个选项来查询当前选定的对象 ($0)。
我可以将其保留为页面扩展扩展名还是我必须采用开发人员工具插件方式的自由度?
我正在尝试访问我正在构建的扩展的 $0 (这是 chrome 开发人员工具中最后选择的元素)。
有什么办法吗?
更多信息: 该扩展是一个页面操作扩展。它有几个功能,我想有一个选项来查询当前选定的对象 ($0)。
我可以将其保留为页面扩展扩展名还是我必须采用开发人员工具插件方式的自由度?
$0
仅当开发人员工具仍处于激活状态时才有意义。获得结果的唯一方法$0
是通过devtools 页面。
devtools 页面可以使用消息传递 API与扩展的其余部分进行通信。在正常情况下,开发工具的状态(打开/关闭)是已知的,并且在(页面操作)弹出窗口的生命周期内是固定的,除非正在检查弹出窗口,否则在弹出窗口打开时无法切换开发工具。
因此,devtools 页面应该是接收者chrome.runtime.onMessage
orchrome.runtime.onConnect
,弹出窗口应该是发送者chrome.riuntime.sendMessage
orchrome.runtime.connect
。
在开发工具页面中,您可以使用以下命令轻松与最后检查的元素进行交互chrome.devtools.inspectedWindow.eval
:
// E.g. Test if the currently inspected element is the main <body> element
chrome.devtools.inspectedWindow.eval('$0 === document.body', function(result) {
alert('$0 is ' + (result ? '' : 'not ') + '<body>');
});
最后一个表达式的结果被传回回调。该值必须是可序列化的,因此您不能“返回”DOM 元素本身。因此,您无法直接访问 DOM 元素,与被检查元素的任何交互都必须通过 devtools API 完成。