如何检查我的网站的Firefox扩展是否在2015年安装

时间:2015-11-19 00:53:24

标签: javascript firefox firefox-addon

我尝试过一堆较旧的问题和答案。我显然很想念它。

我有一个带有启动功能的(无重启?)FF扩展:

var domains = [ "awesomesite.awesome" ];

var addon_domains = []; // list of domains the addon added
var PREF = "media.getusermedia.screensharing.allowed_domains";

function startup(data, reason) {
    if (reason === APP_STARTUP) {
        return;
    }
    var prefs = Components.classes["@mozilla.org/preferences-service;1"]
            .getService(Components.interfaces.nsIPrefBranch);
    var values = prefs.getCharPref(PREF).split(',');
    domains.forEach(function (domain) {
        if (values.indexOf(domain) === -1) {
            values.push(domain);
            addon_domains.push(domain);
        }
    });
    prefs.setCharPref(PREF, values.join(','));


   // Communicate extension has started when user browses to webpage via window object?
   // ?!?!?!?!
}

您可以看到full code here

这只需要在去年左右适用于Firefox。

有什么建议吗? These无效。

谢谢!

更新

以下是我最终使用的扩展程序代码:

function startup(data, reason) {
    if (reason === APP_STARTUP) {
        return;
    }
    var prefs = Components.classes["@mozilla.org/preferences-service;1"]
            .getService(Components.interfaces.nsIPrefBranch);
    var values = prefs.getCharPref(PREF).split(',');
    domains.forEach(function (domain) {
        if (values.indexOf(domain) === -1) {
            values.push(domain);
            addon_domains.push(domain);
        }
    });
    prefs.setCharPref(PREF, values.join(','));

    // Set the cookies
    var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
    var cookieSvc = Components.classes["@mozilla.org/cookieService;1"].getService(Components.interfaces.nsICookieService);

    domains.forEach(function (domain) {
      var cookieUri = ios.newURI("http://" + domain + "/", null, null);
      cookieSvc.setCookieString(cookieUri, null, "firefoxScreenSharing=ready;", null);
    });
}

在网页上:

Helpers.pluginFirefox = function() {
  if (!bowser || bowser.name !== 'Firefox') return false;
  // Read the cookie
  return (document.cookie.indexOf('firefoxScreenSharing=ready') !== -1);
};

如果您只有一个域,则domains.foreach()是多余的。

1 个答案:

答案 0 :(得分:1)

你不能从你的网站那里做很多事情。我建议您从您的插件创建一个cookie,域/主机是您的网站。然后从您的网站检查该cookie是否存在。如果它存在,那么它的安装。 :)

当然,在卸载/禁用你的插件时,你应该删除该cookie。

相关问题