我正在尝试做类似这篇文章的事情.但是,我使用的是Add-on SDK,我似乎无法找到这样做的方法.
在用户安装我的插件后,我会在哪里放置代码来打开页面?
此外,我想知道是否有办法在安装后切换附加栏,并在安装后在我的附加小部件上显示一个面板,就像Chrome在安装扩展程序后执行此操作一样.
我正在使用addon构建器处理firefox插件.我想定期扫描浏览器的历史记录......整个历史记录.我正在寻找像chrome的历史api这样的功能.似乎window.history仅限于会话历史记录.有帮助吗?我疯了,试图解决这个问题.像历史导出这样的插件必须做这样的事情,但是他们的代码对我来说并不是立即可以理解的.
我决定学习使用Add-on SDK开发Firefox附加组件,我正在按照Mozilla网站上的教程进行操作.当我到达运行点时,cfx run我得到以下异常(哎呀):
注意: Firefox版本23.0,附加SDK 1.14,Python 2.6.6,OS Windows XP SP3
(D:\addon-sdk-1.14) D:\my_addon>cfx run
Traceback (most recent call last):
File "D:\addon-sdk-1.14\bin\cfx", line 33, in <module>
cuddlefish.run()
File "D:\addon-sdk-1.14\python-lib\cuddlefish\__init__.py", line 928, in run
bundle_sdk=options.bundle_sdk)
File "D:\addon-sdk-1.14\python-lib\cuddlefish\runner.py", line 640, in run_app
print >>sys.stderr, "Using binary at '%s'." % runner.binary
LookupError: unknown encoding: cp720
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "D:\Python26\lib\atexit.py", line 24, in _run_exitfuncs
func(*targs, **kargs)
File "D:\addon-sdk-1.14\python-lib\cuddlefish\runner.py", line 534, in maybe_r
emove_outfile
os.remove(outfile) …Run Code Online (Sandbox Code Playgroud) Chrome和Firefox宣布他们将很快放弃对NPAPI插件的支持.
见http://techcrunch.com/2013/09/23/say-goodbye-to-npapi/
对于Chrome,如果我想从JavaScript执行一些C++代码,我有几个选项,比如转移到Native Client(NaCl).
但是我在Firefox中的选择是什么?
基本上,我有一个使用Add-on SDK构建的Firefox附加组件,我想从附加内容脚本(JavaScript)调用一些C++代码.我之前使用的是NPAPI,但现在我想转向更长期支持的东西.
提前致谢.
firefox npapi firefox-addon browser-plugin firefox-addon-sdk
我无法通过以下代码更改firefox代理:
var scope = {};
Components.utils.import("resource://imacros/utils.js", scope);
Components.utils.import("resource://imacros/rijndael.js", scope);
Components.utils.import("resource://gre/modules/ctypes.jsm", scope);
var __loginf = scope.__loginf;
var imns = scope.imns;
var pref = imns.prefsvc.getBranch("network.proxy.");
pref.setCharPref("http", server);
pref.setIntPref("http_port", port);
pref.setCharPref("ssl", server);
pref.setIntPref("ssl_port", port);
pref.setIntPref("type", 1);
Run Code Online (Sandbox Code Playgroud)
请帮帮我.
你好我试图弄清楚如何正确安装Firefox Addon SDK,我已经按照所有安装细节,如:安装Python 2.7,正确设置我的PATH变量,并从我的cmd.exe运行插件..每次我运行命令行开始开发插件我收到此错误:
C:\mozilla-build\addon-sdk\bin>activate.bat
Warning: Failed to find Python installation directory
Run Code Online (Sandbox Code Playgroud)
根据我的理解,我已经正确配置了所有内容,任何人都可以帮助解决此错误.而且我的PATH变量如下
User Variables...;C:\mozilla-build\addon-sdk\bin;C:\mozilla-build\python;C:\Python27
SYSTEM Variables ...;C:\mozilla-build\addon-sdk\bin;C:\mozilla-build\python;C:\Python27
Run Code Online (Sandbox Code Playgroud) firefox firefox-addon windows-7 python-2.7 firefox-addon-sdk
这是我的main.js:
var widgets = require("sdk/widget");
var {Cc, Ci, Cu} = require("chrome");
var promptSvc = Cc["@mozilla.org/embedcomp/prompt-service;1"].
getService(Ci.nsIPromptService);
var stringtosave = 'secret information';
var widget = widgets.Widget({
id: "save_text_button",
label: "save text",
contentURL: "http://www.mozilla.org/favicon.ico",
onClick: function() {
promptSvc.alert(null, "My Add-on", stringtosave + " saved! ");
}
});
Run Code Online (Sandbox Code Playgroud)
它可以使用XPCOM警告字符串.
如何将stringtosave保存在PC硬盘上某处的文本文件中?
也许有一个简单的解决方案,也可以使用XPCOM.
我目前正在将Chrome扩展程序转换为Firefox附加组件,并希望复制chrome.storage.sync功能.
但是,无论何时加载项的用户登录到Firefox Sync,我都无法查找使用简单存储的Firefox加载项存储的数据是否会自动同步.
鉴于通过后一种方法存储的所有数据都可以在用户配置文件中找到,我认为只要加法可以在https://addons.mozilla.org上找到它?
任何有关该主题的信息将不胜感激.
我已经为Windows编写了一个简单的下载管理器,我想为Firefox创建一个插件,当启用它时会拦截Firefox中的新下载并将它们发送到下载管理器.
我已经使用以下方法为Google Chrome做了这个:
chrome.downloads.onCreated.addListener(function(details) {
// stop the download
chrome.downloads.cancel(details.id, null);
}
Run Code Online (Sandbox Code Playgroud)
问题是如何使用Firefox附加SDK实现类似的功能.
我看到有一种拦截页面加载的方法来查看可能有用的内容/标题,但后来我不知道请求是否会变成下载.
我也许可以查找不是text/html的内容类型或检查内容处理标题,但如果我没有正确处理所有情况,可能会导致问题.
有没有办法使用JS SDK访问下载管理器或某种方式知道下载何时开始/正在启动并停止下载?
所以我正在开发一个Firefox插件,可以在任何网页的DOM中添加一些HTML.
这里的想法是我使用一个名为template.html模板的文件,它位于dataaddon文件夹内的文件夹中.接下来,我想template.html在变量中使用该文件的内容,以便我可以将它附加到DOM.
myAddon /数据/ template.html:
<div>{{test}}</div>
Run Code Online (Sandbox Code Playgroud)
myAddon/lib目录/ main.js:
var template = ... // This is where I want to fetch the contents of template.html.
pageMod.PageMod({
include: "*", // Apply script at any page
contentScriptFile: [data.url("jquery-1.11.2.min.js"), data.url("main.js")], // Include jQuery and myAddon/data/main.js
onAttach: function(worker){ // when these files are attached, send the content of the html-file to the script.
worker.port.emit("sendTemplate", template);
}
});
Run Code Online (Sandbox Code Playgroud)
myAddon /数据/ main.js
self.port.on("sendTemplate", function(template){
// var template should be <div>{{test}}</div>
} …Run Code Online (Sandbox Code Playgroud)