Chrome扩展程序:有没有办法从扩展程序访问$ 0(选定的控制台元素)?

时间:2013-10-16 10:17:32

标签: javascript google-chrome-extension

我正在尝试访问我正在构建的扩展程序的$ 0(这是chrome开发人员工具中最后选择的元素)。

任何方式都这样做?

更多信息: 扩展名是页面操作扩展名。它有几个功能,我想有一个选项来查询当前选定的对象($ 0)。

我可以将其保留为页面扩展名扩展名,还是我必须使用开发人员工具插件方式?

1 个答案:

答案 0 :(得分:3)

$0仅在开发人员工具仍处于激活状态时才有意义。获得$0结果的唯一方法是通过devtools page

devtools页面可以使用message passing APIs与您的扩展程序的其余部分进行通信。在正常情况下,dev工具的状态(打开/关闭)是已知的并且在(页面操作)弹出窗口的生命周期内是固定的,当弹出窗口打开时,devtools无法切换除非弹出窗口是being inspected
因此,devtools页面应该是接收者 chrome.runtime.onMessagechrome.runtime.onConnect ,弹出窗口应该是发件人 chrome.riuntime.sendMessagechrome.runtime.connect < / SUP>

在开发工具页面中,您可以使用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完成。