Javascript 登录Firefox附加SDK 1.16的web控制台

Javascript 登录Firefox附加SDK 1.16的web控制台,javascript,firefox-addon,firefox-addon-sdk,Javascript,Firefox Addon,Firefox Addon Sdk,如何使用SDK 1.16在web控制台或浏览器控制台中查看console.log()?我在控制台的JS或Logging按钮下都没有看到任何消息 我可以在element-getter.js中执行console.log吗?(内容脚本) 开发设置 var tag = ".first, .second"; var data = require("sdk/self").data; var pageMod = require("sdk/page-mod"); pageMod.PageMod({ //

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

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

开发设置

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);
    });
  }
});
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);
});
  • 启用chrome调试,选中启用远程调试复选框
  • 我正在使用开发设置
  • 在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);
    });
  }
});
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);
});

元素getter.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);
    });
  }
});
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>

addon.port.on(“消息”,函数handleMyMessage(myMessagePayload){
//警报(myMessagePayload);
//警报(myMessagePayload[0]);
//警报(myMessagePayload[1]);
});

有一个
语法错误

  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
第二个问题是,您使用的是相同的日志级别pref

(使用
cfx run运行时,不需要调整日志级别)


解决了这个问题,我可以在浏览器控制台中看到日志条目。但是,同样不幸的是,从内容脚本登录时,这将显示错误的位置信息。在我的Firefox30副本中,它将显示为源于
sandbox.js:311
。但是,从
main.js
登录将具有正确的位置信息。

对于SDK 1.14,默认情况下他们关闭了console.log输出。他们张贴了重新开启的指示