如果我调用console.log('something');从弹出页面,或任何脚本,包括它的工作良好。
然而,由于后台页面不是直接运行弹出页面,它不包括在控制台。
是否有一种方法,我可以得到console.log()的后台页面显示在控制台的弹出页面?
有没有办法从后台页面调用弹出页面中的函数?
如果我调用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.extension.getBackgroundPage()直接访问后台页面。
这意味着,在弹出页面中,你可以这样做:
chrome.extension.getBackgroundPage().console.log('foo');
使它更容易使用:
var bkg = chrome.extension.getBackgroundPage();
bkg.console.log('foo');
现在如果你想在内容脚本中做同样的事情,你必须使用消息传递来实现这一点。原因是,它们属于不同的领域,这说得通。在“消息传递”页面中有许多示例供您查看。
希望这一切都清楚了。
这是一个老帖子,已经有很好的答案,但我补充我的两点。我不喜欢使用console.log,我宁愿使用日志记录器记录到控制台,或任何我想要的地方,所以我有一个模块定义了一个日志函数,有点像这样
function log(...args) {
console.log(...args);
chrome.extension.getBackgroundPage().console.log(...args);
}
当我调用日志时(“这是我的日志”),它将在弹出式控制台和后台控制台中写入消息。
这样做的好处是可以在不更改代码的情况下更改日志的行为(比如禁用生产日志等)。
如果单击扩展列表中的"background.html"链接,就可以打开后台页面的控制台。
要访问对应于您的扩展的后台页面,打开Settings /extensions或打开一个新选项卡并输入chrome://extensions。你会看到类似这样的截图。
在您的扩展单击链接背景页。这将打开一个新窗口。 对于上下文菜单示例,窗口的标题为:_generated_background_page.html。
最简单的解决方案是在文件顶部添加以下代码。然后,你可以使用所有完整的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: / / extensions / 详细信息>背景页面