如何检查我的网站'的Firefox扩展程序于2015年安装
How to check if my website's Firefox extension is installed in 2015
我试过一些老问题和答案。我显然很想念它。
我有一个(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。
相关文章:
- 您可以使用JavaScript和Firefox扩展来更改现有页面吗
- 如何在谷歌开发者控制台上为firefox扩展创建oAuth项目
- 无法在XUL Firefox扩展中获取TinyMCE的实例
- FireFox扩展对TinyMCE编辑器执行脚本注入
- Firefox扩展开发:如何在内容脚本中创建一个全局函数,以便其他加载的脚本文件可以访问它
- firefox扩展/如何访问动态创建的元素
- 将jquery添加到firefox扩展中
- 替换 nsICertificateDialogs 从 Firefox 扩展
- 在firefox扩展上观察并保存http请求
- Firefox扩展页面modonAtttach很慢
- 为什么我的firefox扩展javascript不能访问opener窗口,也看不到window.name
- Firefox扩展不适用于http://https://以外的URL
- 为什么我的 init() 函数没有运行?(安装 Firefox 扩展时自动添加工具栏按钮,但仅在首次运行时)
- 如何在 Firefox 扩展的 JavaScript 中的按钮背景中插入图像
- 开发Firefox扩展最简单的方法是什么
- 如何在mozilla firefox扩展中更改自定义工具栏按钮的颜色
- firefox扩展对$.ajax的调用不起作用
- 使用firefox扩展获取SSL信息
- 自动运行firefox扩展jpm
- 如何引用Firefox扩展的数据目录中的文件