如果我从弹出页面或任何包含在其中的脚本调用 console.log('something'); ,它可以正常工作。
但是由于后台页面不直接运行弹出页面,因此不会在控制台中包含它。
有没有办法让后台页面中的console.log()在弹出页的控制台中显示?
是否有任何方法可以从后台页面调用弹出页面中的函数?
但是由于后台页面不直接运行弹出页面,因此不会在控制台中包含它。
有没有办法让后台页面中的console.log()在弹出页的控制台中显示?
是否有任何方法可以从后台页面调用弹出页面中的函数?
如果您在扩展列表中单击“background.html”链接,可以打开后台页面的控制台。
要访问与您的扩展程序对应的后台页面,请打开“设置/扩展程序”或打开一个新标签页并输入“chrome://extensions”。您将看到类似于此屏幕截图的内容:
在您的扩展项下,单击“background page”链接。这将打开一个新窗口。对于上下文菜单示例,该窗口的标题为:_generated_background_page.html
。
chrome.extension.getBackgroundPage()
直接访问后台页面。chrome.extension.getBackgroundPage().console.log('foo');
var bkg = chrome.extension.getBackgroundPage();
bkg.console.log('foo');
希望这能澄清一切。
alert()
并获取chrome.extension.getBackgroundPage()
,我会得到null
。我需要设置权限或进行其他配置吗? - jdsconsole.log("something")
时,该消息将被记录到后台页面的控制台中。要查看它,您可以前往chrome://extensions/
并在您的扩展下点击检查视图
。console.log
应该在当前页面中显示日志消息。你仍然可以使用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
const log = chrome.extension.getBackgroundPage().console.log;
log('something')
打开日志:
如果您想将日志记录到当前页面的控制台,请尝试以下方法:
chrome.tabs.executeScript({
code: 'console.log("addd")'
});
2022年更新:使用Manifest 3和service worker,您只需要转到chrome://extensions
,单击您的扩展程序上的详情
按钮,找到:检查视图
->Service Worker
。
这是一个旧帖子,已经有很好的答案了,但是我想加上我的两分。我不喜欢使用console.log,我宁愿使用一个记录器来记录到控制台或者任何我想要的地方,因此我有一个定义日志函数的模块,类似于这个
function log(...args) {
console.log(...args);
chrome.extension.getBackgroundPage().console.log(...args);
}
关于原问题,我想补充 Mohamed Mansour 的答案,还有另一种方法可以实现相反的效果:
你可以使用 chrome.extension.getViews()
方法从 后台页面/脚本中 访问其他扩展页面(例如选项页面,弹出页面)。如此描述在这里.
// overwrite the console object with the right one.
var optionsPage = ( chrome.extension.getViews()
&& (chrome.extension.getViews().length > 1) )
? chrome.extension.getViews()[1] : null;
// safety precaution.
if (optionsPage) {
var console = optionsPage.console;
}