Firefox插件看到标签,但标签?

时间:2014-11-10 23:59:49

标签: firefox javascript-events firefox-addon

我有一个简单的Firefox插件工作。它通过菜单打开和关闭。请参阅"工具 - >优雅的定位器"菜单项。

该插件将对HTML文档中元素的类名进行一些报告。我认为这不会是一件令人讨厌的任务。

它看标签,但是标签?它们似乎是XUL文档中的标签。很多" menuitem"等等。没有"输入"标签。我正在查看一个带有表单和两个文本字段的页面,并且那里有两个输入标记,但插件看不到它们。

监听器功能是:

findClassLabels : function(anEvent) {

  var doc = window.document;

  var text = "// At " + Date() + ", Page = " + doc.title + "\n";
  oStream.write(text, text.length);

  var tags = doc.getElementsByTagName("*");

  for (var idx = 0; idx < tags.length; idx++) {
    var tag = tags[idx];
    var str = "tag: '" + tag.tagName + "' -> class: '" + tag.className + "'\n";
    oStream.write(str, str.length);
  }
  oStream.write("\nDONE\n\n", 7);
}

这是写入文件&#34; /tmp/test.txt"。这一部分全部正常,我看到了开始的消息和&#34; DONE&#34;而不是正确的东西。

整个项目位于https://github.com/rkiddy/classy-locator-firefox-extension.git

如果您克隆项目,请键入&#34; make&#34;,然后在Firefox中打开xpi文件,它将起作用。点击&#34;开始&#34;菜单然后重新加载页面。您将在/tmp/test.txt文件中看到一堆输出。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:-1)

您的意见澄清了您的问题:

您正在返回xul元素。你的范围是错误的。通过执行

访问选项卡内容
  • window.gBrowser.contentWindow.document.getElementsByBlassName
    • 但请注意,直接在contentWindow上执行gBrowser会为您提供当前所选标签的contentWindow,您也可以跳过contentWindow.document并执行{{ 1}}。
      • window.gBrowser.contentDocumentwindow,它是浏览器窗口而不是html窗口
  • DOMWindow
    • 这将获得windowtype导航器的最新窗口:浏览器在此处查看窗口类型:
    • 您可以使用Services.wm.getMostRecentWindow('navigator:browser').gBrowser.contentWindow....
    • 获取窗口类型
  • 像这样浏览所有窗口:

    aDOMWindow.document.documentElement.getAttribute('windowtype')

var DOMWindows = Services.wm.getEnumerator(null); while (DOMWindows.hasMoreElements()) { var aDOMWindow = DOMWindows.getNext(); var windowtypeOfADomWindow = aDOMWindow.document.documentElement.getAttribute('windowtype'); console.log('windowtype of this domwindow is:', windowtypeOfADomWindow) } 窗口有navigator:browser,通常是gBrowser,tabConatiner有childNodes,它们是标签。所以你可以像这样浏览标签:

gBrowser.tabContainer