console.log登录Firefox插件SDK 1.16的web控制台



如何使用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输出。

相关内容

  • 没有找到相关文章

最新更新