如何使用SDK 1.16在Web控制台或浏览器控制台中查看console.log()?我没有在JS或Logging按钮下的控制台中看到任何消息。
我可以在element-getter.js中执行console.log吗? (内容脚本)
开发设置
的 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);
});
}
});
元素-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>
答案 0 :(得分:2)
有SyntaxError
。
var elements = Array.map(document.querySelectorAll(tag). function(e) e.innerHTML);
应该是
var elements = Array.map(document.querySelectorAll(tag), function(e) e.innerHTML);
(点对逗号)
不幸的是,这似乎没有记录正确的位置信息,似乎:
SyntaxError: missing ) after argument list core.js:90
第二个问题是您使用相同的日志级别优先级。它should be
extensions.sdk.console.logLevel
(使用cfx run
)
解决这个问题,我可以在浏览器控制台中看到日志条目。但是,再次,从内容脚本进行日志记录时,不幸的是会显示错误的位置信息。它将显示为源自我的Firefox 30副本中的sandbox.js:311
。但是,从main.js
登录将获得正确的位置信息。
答案 1 :(得分:1)
使用SDK 1.14,默认情况下他们关闭了console.log输出。他们发布了有关将其重新打开here的说明。