0

すべてのタブの URL からドメインを抽出するには、アドオンの main.js ファイルに A 要素を作成する必要があります。

function listTabs() {
var tabs = require("sdk/tabs");
for each (var tab in tabs)
{
var tab_url = document.createElement('a');
tab_url.href = tab.url;
var domain[] = tab_url.hostname;
}

ただし、「ドキュメントが定義されていません」というエラーが表示されます。content.document も試しましたが、これもうまくいきませんでした。

(ドメインを抽出する方法は他にもあることは知っていますが、互換性の理由から、これがアドオンで行う唯一の方法です)。

誰かが助けてくれることを願っています。

乾杯

4

1 に答える 1

4

あなたが何をしようとしているのかわからないので、ここに2つの異なるアプローチがあります。

ページのドキュメント要素にアクセスする必要がある場合は、簡素化してpage-mod.

タブ内のページに A 要素を作成する方法は次のとおりです。

var { getTabs, getTabContentWindow } = require('sdk/tabs/utils');

function listTabs1() {
  var tabs = getTabs();
  tabs.forEach(function (tab) {
    // Fake a newly created document
    var window = getTabContentWindow(tab);    
    var document = window.document;
    var tab_url = document.createElement('a');
    tab_url.setAttribute("href", tab.url);
  });
}

page-mod上記のコードの代わりに、このページの変更を行うためにa を使用することをお勧めします。

ただし、各タブのホストを調べたいだけの場合は、以前と同じようにそれらをループしてから、URLモジュールを使用して難しいホスト名の解析を行うことができます。

var URL = require('sdk/url').URL;
var tabs = require("sdk/tabs");

function listTabs2() {
  tabs.forEach(function (tab) {
      var url = URL(tab.url);
      console.log(url.hostname);
  });

}

最後のヒントとしてnsIEffectiveTLDService、URL の解析はすべてエラーが発生しやすいため、 を使用して、自分が持っていると思われるホスト名のトップ レベル ドメインを見つけるモジュールを簡単に作成できるということです。 https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIEffectiveTLDService

幸運を!

于 2013-01-30T22:47:19.837 に答える