用于Firefox附加组件SDK 1.16的Web控制台中的console.log

时间:2014-07-02 03:55:00

标签: javascript firefox-addon firefox-addon-sdk

如何使用SDK 1.16在Web控制台或浏览器控制台中查看console.log()?我没有在JS或Logging按钮下的控制台中看到任何消息。

我可以在element-getter.js中执行console.log吗? (内容脚本)

开发设置

  • 启用chrome调试,启用远程调试复选框。
  • 我正在使用devprefs进行开发设置
  • in about:config - > extensions.sdk.logLevel = 所有
  • 我正在创建一个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);
    });
  }
});


元素-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>

2 个答案:

答案 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的说明。