我正在使用WebStorm 7进行Firefox附加SDK开发.
WebStorm显示警告:"未解决的功能或方法" require().
我想摆脱警告.
var pageMod = require("sdk/page-mod");
Run Code Online (Sandbox Code Playgroud)
注意:我已经配置了JavaScript库(请参阅/ lib/sdk全局).
环境:
我打算开发一个简单的Firefox扩展,它将缩短当前活动选项卡的URL,显示带有缩短URL的弹出窗口,并将其放入剪贴板.
在谷歌浏览器中,这非常简单(根据http://developer.chrome.com/extensions/getstarted.html) - 纯JavaScript以及一些与浏览器UI交互的JavaScript API调用.
但是,在搜索了一个很好的Firefox扩展教程之后,我找到的最正式的链接是:
据他们说,看起来我必须学习XUL语言,即使是与浏览器UI的最简单的交互.最重要的是,我将不得不设置自定义Firefox配置文件,以便在开发过程中不使用我的默认配置文件,创建复杂的目录结构,用晦涩的XML编写清单,找出如何打包和测试我实现的任何内容等.
它是2013年,是不是有一种更简单的方法来构建Firefox扩展?
javascript firefox google-chrome firefox-addon firefox-addon-sdk
我有一个视频元素:
var video = window.content.document.createElement("video");
video.width = width;
video.height = height;
video.style.backgroundColor = "black";
window.content.document.body.appendChild(video);
Run Code Online (Sandbox Code Playgroud)
我正在通过Firefox 上的getUserMedia()检索它的源代码:
window.navigator.getMedia = ( window.navigator.getUserMedia || window.navigator.webkitGetUserMedia || window.navigator.mozGetUserMedia || window.navigator.msGetUserMedia);
window.navigator.getMedia( //constraints, sucessCallback, errorCallback
{video: true, audio: false},
function(stream) {
if (window.navigator.mozGetUserMedia)
video.mozSrcObject = stream;
else
{
var vendorURL = window.URL || window.webkitURL;
video.src = vendorURL.createObjectURL(stream);
}
video.play();
},
function(err) {
console.log("Error: " + err);
}
);
Run Code Online (Sandbox Code Playgroud)
问题是我需要知道视频的"活动区域",并且它返回0:
video.onloadedmetadata = function(){
console.log(this.width + "x" +this.height);
console.log(this.videoWidth + "x" +this.videoHeight);
}
Run Code Online (Sandbox Code Playgroud)
那么,我该如何检索REAL值?:

javascript html5 firefox-addon html5-video firefox-addon-sdk
我正在为Firefox开发(另一个)密码管理器插件.我的附加组件需要:
优选地,还:
我尝试过Add-on SDK(以前称为Jetpack),它使开始开发变得非常容易.但是,我发现HTML无法轻松创建"本机外观"对话框,并且SDK相当重量级.(构建一个简单的扩展需要几千字节;其中包括一个XPCOM组件!)
使用Add-on SDK开发我的Firefox扩展有哪些优缺点?它是否已准备好进行"严肃"的扩展开发?
在我目前的插件中,我拦截了Firefox上的所有http请求 http-on-modify-request
实际上,使用我当前的代码,我能够分离来自网页/标签的请求以及所有其他来自的请求(例如,RSS提要更新,扩展管理器请求,来自XPCOM组件的XHR请求等)
我想确定除了网络流量之外发起请求的人不仅仅是整个组(RSS提要更新,扩展管理器请求,来自XPCOM组件的XHR请求等)?
示例:自定义变量requestRequestor将具有标识特定插件或RSS更新等的值.
我想这个silimar问题在没有解决方案的情况下识别来自PageWorker的请求.
用于标识整个组的当前代码(获取触发http-on-modify-request通知的浏览器)类似于:
Components.utils.import('resource://gre/modules/Services.jsm');
Services.obs.addObserver(httpObs, 'http-on-modify-request', false);
//Services.obs.removeObserver(httpObs, 'http-on-modify-request'); //uncomment this line, or run this line when you want to remove the observer
var httpObs = {
observe: function (aSubject, aTopic, aData) {
if (aTopic == 'http-on-modify-request') {
/*start - do not edit here*/
var oHttp = aSubject.QueryInterface(Components.interfaces.nsIHttpChannel); //i used nsIHttpChannel but i guess you can use nsIChannel, im not sure why though
var interfaceRequestor = oHttp.notificationCallbacks.QueryInterface(Components.interfaces.nsIInterfaceRequestor); …Run Code Online (Sandbox Code Playgroud) javascript firefox firefox-addon firefox-addon-sdk firefox-developer-tools
我对使用firefox的插件开发很新.我选择了addon sdk来将我的chrome扩展程序移植到firefox.
您建议向用户显示选项页面/选项面板/选项窗口?
从我的addon目录加载options.html文件工作得很好(addTab(data.url("options.html"));),但是我知道不能将page-mod附加到它上面.因此我无法与main.js沟通以保存我的选项,对吧?
用户应该如何访问它?在chrome中这很容易.右键单击您的图标 - >选项,它会为您打开.有没有办法为firefox创建一个simliar行为?
有什么建议吗?
我正在制作Firefox浏览器插件,需要找到当前标签的网址
我试过这篇文章从Firefox扩展中打开当前标签/窗口中的URL,但它告诉我'窗口'没有定义.(我想是因为我正在制作插件而不是扩展插件.)
这是我试图做的事情:
var widgets = require('widget');
var tabs = require('tabs');
var widget1 = widgets.Widget({
id: "widget1",
label: "widget1",
contentURL: "http://www.mozilla.org/favicon",
onClick: function() {
console.log(tabs.url);
}
})
Run Code Online (Sandbox Code Playgroud)
我制作了一个小部件,当我点击它时,当前标签的url应为'console.log'ed.
似乎没有发生!继续获取"info:undefined",这显然意味着tabs.url没有返回任何内容.但这似乎是根据https://addons.mozilla.org/en-US/developers/docs/sdk/1.5/packages/addon-kit/docs/tabs.html使用它的方式
有人有主意吗?
谢谢,
将
我在Firefox addon-sdk中看到了很多例子,它们在声明变量时使用了以下样式.
var { Hotkey } = require("sdk/hotkeys");
Run Code Online (Sandbox Code Playgroud)
与使用var { Hotkey }相比,它有什么不同var HotKey?为什么要使用额外的花括号?
我正在使用addon-sdk开发一个Firefox插件.此插件将菜单项添加到上下文菜单,用户可以右键单击任何编辑控件以激活此菜单项.一旦激活,它会在用户输入内容时显示一个带有建议的小弹出窗口.
除了Gmail之外,一切运作良好.
在Gmail中,以下代码失败.
self.port.on('showPopup', function(data) {
var active = document.activeElement;
console.log(active.type);
if (active && getWordUnderCaret(active).word == data.input) {
populateSuggestions(data);
positionPopup(active);
stylePopup();
}
});
Run Code Online (Sandbox Code Playgroud)
失败的原因是document.activeElement指向document.body和getWordUnderCaret失败,因为它期望输入/ textarea控制.这适用于所有其他地方.我不确定它为什么指向,document.body因为我可以看到焦点在于输入控件.键入document.activeElementFirebug控制台给了我适当的对象.
或者,我试图自己跟踪活动元素而不是使用document.activeElement.但我遇到了一些问题,比如坚持这个问题.我不能用window它作为window代理来坚持这个.我尝试过,unsafeWindow但无法让它工作.
我想知道为什么这在Gmail中失败了?任何帮助解决这个问题都会很棒!
我的代码可以在Github上找到
编辑
看起来这是addon-sdk的一个问题.我创建了一个Gist,可以用来重现问题.它可以在这里找到
我已经使用Add-on SDK API编写了大部分Firefox插件.我现在发现Add-on SDK可能不够强大,不适合我的目的.我需要两件事:
这确实令人失望,但我不相信Add-on SDK可以实现这些功能.
首先,我了解widgetAdd-on SDK API中有一个模块.但这只允许我在笨拙的附加栏上添加一个简单的图标或标签.如果我需要为Firebug或Greasemonkey的位置栏旁边添加一个更好的按钮怎么办?至于在firefox中修改附加组件管理器,我已经尝试使用附加SDK的Nickolay Ponomarev的XUL而没有任何成功.如果有人知道如何使这个工作,并指出我的方向是非常有用的(cfx init --template xul当我尝试时,常规SDK没有做任何事情)