2014-09-03 73 views
1

我的Firefox插件有一些问题。 我创建了一个contextmenu,它工作正常。但是这个函数不会返回元标签的内容。Firefox插件SDK - getElementsByTagName

var tabs = require("sdk/tabs"); 
var contextMenu = require("sdk/context-menu"); 
[..] 
     onMessage: function() { 
     pageWorker = require("sdk/page-worker").Page({ 
      contentScript: "self.postMessage(document.head.getElementsByTagName('meta'));", 
      contentURL: tabs.activeTab.url, 
      onMessage: function(metaTags){ 
       var text= ""; 
       console.log(metaTags.length); 
       for(var i = 0; i < metaTags.length; i++){ 
        if(metaTags[i].getAttribute("property") == "description"){ 
         text = metaTags[i].getAttribute("content"); 
         break; 
        } 
       } 
       console.log(text); 
      } 
     }); 
    } 

console.log(metaTags.length)return undefined。这是一个Firefox-SDK问题。导致Skript在jsfiddle或greasemonkey中正常工作。

回答

1

用于加载项的Firefox插件SDK defaults to an "error" log level,这可防止console.log语句出现在浏览器控制台中。若要解决此问题,请将extensions.sdk.console.logLevel(其中所有 SDK插件的更改记录行为)或extensions.extensionID.sdk.console.logLevel(其中extensionID是您的插件的Program ID)设置为“全部”或“调试”。

+0

我使用“cfx run”。 “ ”当您使用cfx run或cfx test运行加载项时,全局extensions.sdk.console.logLevel首选项会自动设置为“info”。这意味着对console.log()的调用将出现在控制台输出中“。 – EsTyA 2014-09-03 16:51:01

+0

我相信控制台输出实际上显示在您运行'cfx run'的命令行窗口中,而不是浏览器控制台IIRC。你可以检查吗? – mc10 2014-09-03 17:05:44

+0

我按Strg + A.然后我选择扩展。在那里我激活了调试模式。所以我可以在Firefox的标准调试工具中看到console.log输出。 – EsTyA 2014-09-03 17:50:34