我尝试过很多较旧的问题和答案。我显然错过了它。
我有一个(无需重新启动?)带有启动功能的 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()
是多余的。
最佳答案
您在网站方面无法做太多事情。我建议的是,从您的插件中创建一个 cookie,其中域/主机是您的网站。然后从您的网站检查该 cookie 是否存在。如果存在,则已安装。 :)
当然,在卸载/禁用您的插件时,您应该删除该 cookie。
关于javascript - 如何检查我的网站的 Firefox 扩展是否安装于 2015 年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33793394/