Chrome扩展程序将目录引用从Content Script传递到DevTools页面

时间:2018-09-07 07:19:13

标签: javascript google-chrome-extension google-chrome-devtools content-script

我有一个简单的扩展程序,它使用devtools页面提供调试功能。单击browserAction图标后,该页面将在当前选项卡中插入内容脚本。如何将内容脚本中的DOM节点(或nodeId)传递回devtools页面,以便可以在其上调用inspect()

这就是我尝试过的

manifest.json包含:

"devtools_page": "devtools.html"

devtools.html包含:

<script src="devtools-script.js"></script>

devtools-script.js:

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(tab.id, {
        file: 'js/content.js'
    }, function () {
        chrome.devtools.inspectedWindow.eval('window.searchedElement', {
            useContentScriptContext: true
        }, function (result) {
            console.log('resulting element:', result);
        });
    });
});

content.js:

window.searchedElement = document.body;

(我使用document.body来简化示例)


现在,当我导航到页面时,打开DevTools并单击扩展名,会发生以下情况:

  1. DevTools打开我的devtools.html页面(打开DevTools时,单击之前)
  2. 我的devtools页面注入我的内容脚本(单击后)
  3. 内容脚本代码设置搜索的元素
  4. DevTools页面执行eval()以返回先前由内容脚本设置的元素

devtools-script生成的日志为:

  

结果元素:{}

因此,显然您不能轻松地传递该节点。我也许可以在内容脚本中为元素提供id属性,然后在devtools页面中对其进行查询,但这似乎很笨拙。

是否有更好的方法可以从devtools页面访问已检查窗口中的元素?

0 个答案:

没有答案