Firefox扩展 - 新标签 - 如何覆盖首选项?

时间:2015-09-27 13:49:39

标签: firefox firefox-addon firefox-addon-sdk

我是Firefox扩展新手,这就是我使用Add On SDK的原因。

我想创建一个扩展程序,每次用户打开新标签页时都会显示特定网站。到目前为止,这是我的代码:

var self = require("sdk/self");
var tabs = require("sdk/tabs");

// Listen for tab openings.
tabs.on('open', function onOpen(tab) {
   getActiveTab();
});

function getActiveTab(){
tabs.on('activate', function (tab) {
  tab.url = "http://www.example.com";
});
}

这很有效。但在加载指定的域之前,它会加载Firefox默认的newtab页面。现在是否有API参考来访问newtab设置并更改为example.com?

谢谢,

格尔德

2 个答案:

答案 0 :(得分:2)

可以使用SDK更改about:newtab网址:

require('sdk/preferences/service').set('browser.newtab.url', 'http://www.stackoverflow.com');

但是它变得 已经过时了FF41 ,因为不再有browser.newtab.url首选项。

如果您仍打算使用它,您也可以考虑将其添加到您的代码中:

var { when: unload } = require('sdk/system/unload');
var reason;
unload( function ( reason ) {
  require('sdk/preferences/service').set('browser.newtab.url', 'about:newtab');
});

以便 在加载项卸载后撤消首选项更改 。您还可以将其中一个卸载原因传递给该功能:'uninstall''disable''shutdown''upgrade''downgrade',或者不提供{{1}完全没有参数/保持未定义。

答案 1 :(得分:2)

由于browser.newtab.url首选项已被删除,因此这是执行此操作的新方法:https://github.com/sblask/firefox-open-tabs-next-to-current/blob/master/lib/helpers.js#L50可以在此处找到模块的代码:https://dxr.mozilla.org/mozilla-central/source/browser/modules/NewTabURL.jsm

如果您还想更换主页,则必须更改browser.startup.homepage首选项。