如何使用SDK 1.16在web控制台或浏览器控制台查看console.log() ?我在JS或Logging按钮下的控制台中没有看到任何消息。
我可以在element-getter.js中执行console.log吗?(内容脚本)
- 启用chrome调试,启用远程调试复选框选中
- 我正在使用devprefs开发设置
- in about:config -> extensions.sdk。logLevel = all 我正在创建一个xpi文件。然后安装插件。
main.js
var tag = ".first, .second";
var data = require("sdk/self").data;
var pageMod = require("sdk/page-mod");
pageMod.PageMod({
//include: "*.example.com",
include: "http://example.com/*",
contentScriptFile: data.url("element-getter.js"),
onAttach: function(worker) {
worker.port.emit("getElements", tag);
worker.port.on("gotElements", function(elementContent) {
pcPanel.port.emit("message",elementContent);
});
}
});
element-getter.js
self.port.on("getElements", function(tag) {
var elements = Array.map(document.querySelectorAll(tag). function(e) e.innerHTML);
console.log(elements);
self.port.emit("gotElements", elements);
});
panel.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script>
addon.port.on("message", function handleMyMessage(myMessagePayload) {
//alert(myMessagePayload);
//alert(myMessagePayload[0]);
//alert(myMessagePayload[1]);
});
</script> </head> </html>
有一个SyntaxError
。
var elements = Array.map(document.querySelectorAll(tag). function(e) e.innerHTML);
应为
var elements = Array.map(document.querySelectorAll(tag), function(e) e.innerHTML);
(点vs逗号)
不幸的是,这并没有记录正确的位置信息,似乎:
SyntaxError: missing ) after argument list core.js:90
第二个问题是您使用相同的日志级别首选项,它应该是
extensions.sdk.console.logLevel
(使用cfx run
运行时不需要调整日志级别)
修复这个,我可以在浏览器控制台中看到日志条目。但是,同样不幸的是,当从内容脚本登录时,这将显示错误的位置信息。它将显示为起源于我的Firefox 30副本中的sandbox.js:311
。但是,从main.js
进行日志记录将具有正确的位置信息。
在SDK 1.14中,他们默认关闭console.log输出。