如何从窗口向chrome扩展中的devtool发送信息

时间:2016-07-16 22:57:28

标签: google-chrome google-chrome-extension google-chrome-devtools

在我的应用程序中,我有一个名称空间的应用程序,并且有myApp的信息或元数据可能会对devpane有用。

window.myApp = new App();
  1. 如何将以下信息转发或发送到devtool.js

    window.myApp.metadata; // information
    
  2. 我可以使用自定义元数据序列化的函数从devtool发送请求吗?

  3. 我在下面的解决方案中看过类似的帖子,当我尝试时会返回null

    chrome.devtools.inspectedWindow.eval("window.myApp", {
      useContentScriptContext: true
    })
    

    注意:如果可以提供非常棒的样本模板。

1 个答案:

答案 0 :(得分:1)

这就是我解决这个问题的方法。感觉比必要的复杂,但确实有效。

在检查窗口的上下文中

基于此question

这是您可以访问window.myApp.metadata并可以将其放入数据对象的位置。

var event = new CustomEvent("RebroadcastExtensionMessage", {data: ""});
window.dispatchEvent(event);

在内容脚本中

这只是将数据转发到后台页面。

window.addEventListener("RebroadcastExtensionMessage", function(evt) {
    chrome.runtime.sendMessage(evt)
}, false);

在后台页面

基于Chrome docs

chrome.runtime.onConnect.addListener(function(devToolsConnection) {
    chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
        devToolsConnection.postMessage(request)
    });
})

在devtools.js

var backgroundPageConnection = chrome.runtime.connect({
    name: "devtools-page"
});

backgroundPageConnection.onMessage.addListener(function (message) {
    // Data has arrived in devtools page!!
});