如果我调用console.log('something');从弹出页面,或任何脚本,包括它的工作良好。

然而,由于后台页面不是直接运行弹出页面,它不包括在控制台。

是否有一种方法,我可以得到console.log()的后台页面显示在控制台的弹出页面?

有没有办法从后台页面调用弹出页面中的函数?


当前回答

最简单的解决方案是在文件顶部添加以下代码。然后,你可以使用所有完整的Chrome控制台api,因为你会正常。

 console = chrome.extension.getBackgroundPage().console;
// for instance, console.assert(1!=1) will return assertion error
// console.log("msg") ==> prints msg
// etc

其他回答

最简单的解决方案是在文件顶部添加以下代码。然后,你可以使用所有完整的Chrome控制台api,因为你会正常。

 console = chrome.extension.getBackgroundPage().console;
// for instance, console.assert(1!=1) will return assertion error
// console.log("msg") ==> prints msg
// etc

任何扩展页面(除了内容脚本)都可以通过chrome.extension.getBackgroundPage()直接访问后台页面。

这意味着,在弹出页面中,你可以这样做:

chrome.extension.getBackgroundPage().console.log('foo');

使它更容易使用:

var bkg = chrome.extension.getBackgroundPage();
bkg.console.log('foo');

现在如果你想在内容脚本中做同样的事情,你必须使用消息传递来实现这一点。原因是,它们属于不同的领域,这说得通。在“消息传递”页面中有许多示例供您查看。

希望这一切都清楚了。

目前使用Manifest 3和service worker,你只需要进入扩展页面/详细信息,然后单击Inspect Views / service worker。

试试这个,如果你想登录到活动页面的控制台:

chrome.tabs.executeScript({
    code: 'console.log("addd")'
});

要从后台页面获取控制台日志,您需要在后台页面background.js中编写以下代码片段。

chrome.extension.getBackgroundPage().console.log('hello');

然后加载扩展并检查其后台页面以查看控制台日志。