如何检查我的网站'的Firefox扩展程序于2015年安装

How to check if my website's Firefox extension is installed in 2015

本文关键字:Firefox 扩展 程序 安装 2015年 何检查 检查 网站 我的      更新时间:2023-09-26

我试过一些老问题和答案。我显然很想念它。

我有一个(restartless?)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?
   // ?!?!?!?!
}

你可以在这里看到完整的代码。

这只需要在过去一年左右的时间里为Firefox工作即可

有什么建议吗?这些都不起作用。

谢谢!

更新

这是我最终使用的扩展代码:

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()是多余的。

您在网站方面做不了什么。我建议你从你的插件中创建一个cookie,域名/主机就是你的网站。然后从你的网站上检查该cookie是否存在。如果存在,则已安装。:)

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