Javascript 登录Firefox附加SDK 1.16的web控制台
如何使用SDK 1.16在web控制台或浏览器控制台中查看console.log()?我在控制台的JS或Logging按钮下都没有看到任何消息 我可以在element-getter.js中执行console.log吗?(内容脚本)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({ //
开发设置
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输出。他们张贴了重新开启的指示