Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firefox addon Firefox插件-如何在main.js中创建A元素?_Firefox Addon_Firefox Addon Sdk - Fatal编程技术网

Firefox addon Firefox插件-如何在main.js中创建A元素?

Firefox addon Firefox插件-如何在main.js中创建A元素?,firefox-addon,firefox-addon-sdk,Firefox Addon,Firefox Addon Sdk,要从所有选项卡的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; } 但是,我们得到一个错误“文档未定义”。我们

要从所有选项卡的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,但也没有成功

(我知道还有其他方法可以提取域,但出于兼容性的原因,这是我们的加载项应该做的唯一方法)

希望有人能帮忙


干杯

我真的不明白你想做什么,所以这里有两种不同的方法

如果您需要访问页面的文档元素,则必须使用较低级别的方法,除非您希望简化并仅使用
页面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
来更改页面,而不是使用上面的代码

但是,如果您只是想检查每个选项卡的主机,您可以像以前一样循环检查它们,然后使用
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);
  });

}
最后一个提示是,您可以轻松编写一个模块,使用
nsiefficivetldservice
查找您认为拥有的主机名的顶级域,因为URL解析容易出错


祝你好运

我真的不明白你想做什么,所以这里有两种不同的方法

如果您需要访问页面的文档元素,则必须使用较低级别的方法,除非您希望简化并仅使用
页面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
来更改页面,而不是使用上面的代码

但是,如果您只是想检查每个选项卡的主机,您可以像以前一样循环检查它们,然后使用
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);
  });

}
最后一个提示是,您可以轻松编写一个模块,使用
nsiefficivetldservice
查找您认为拥有的主机名的顶级域,因为URL解析容易出错

祝你好运