如果我console.log('something');
从弹出页面调用,或者包含任何脚本,它可以正常工作。
但是,由于后台页面不是直接从弹出页面运行的,因此它不包含在控制台中。
有没有办法让console.log()
's 在后台页面中显示在弹出页面的控制台中?
有什么办法可以从后台页面调用弹出页面中的函数吗?
如果我console.log('something');
从弹出页面调用,或者包含任何脚本,它可以正常工作。
但是,由于后台页面不是直接从弹出页面运行的,因此它不包含在控制台中。
有没有办法让console.log()
's 在后台页面中显示在弹出页面的控制台中?
有什么办法可以从后台页面调用弹出页面中的函数吗?
如果您单击扩展列表中的“background.html”链接,您可以打开后台页面的控制台。
要访问与您的扩展程序相对应的后台页面,请打开Settings / Extensions
或打开一个新选项卡并输入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');
现在如果你想在内容脚本中做同样的事情,你必须使用消息传递来实现这一点。究其原因,它们都属于不同的领域,这是有道理的。消息传递页面中有许多示例供您查看。
希望能清除一切。
要直接回答您的问题,当您console.log("something")
从后台调用时,此消息会记录到后台页面的控制台。要查看它,您可以转到chrome://extensions/
并单击inspect view
扩展程序下的那个。
当您单击弹出窗口时,它会加载到当前页面中,因此 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