标签: firefox-addon-sdk

如何修复WebStorm警告"未解决的功能或方法"为"require"(Firefox附加SDK)

我正在使用WebStorm 7进行Firefox附加SDK开发.

WebStorm显示警告:"未解决的功能或方法" require().

我想摆脱警告.

var pageMod = require("sdk/page-mod");
Run Code Online (Sandbox Code Playgroud)

注意:我已经配置了JavaScript库(请参阅/ lib/sdk全局).

环境:

  • WebStorm 7.0.2
  • Windows 7 64位
  • Firefox附加组件SDK 1.15beta1

javascript firefox-addon webstorm firefox-addon-sdk

205
推荐指数
9
解决办法
12万
查看次数

开发Firefox扩展的最简单方法是什么?

我打算开发一个简单的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

60
推荐指数
5
解决办法
3万
查看次数

获得真正的HTML5视频宽度和高度

我有一个视频元素:

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

24
推荐指数
2
解决办法
2万
查看次数

使用Add-on SDK开发我的Firefox扩展有哪些优点/缺点?

我正在为Firefox开发(另一个)密码管理器插件.我的附加组件需要:

  • 向每个密码字段添加两个上下文菜单项.
  • 选择菜单项时,打开对话框或浮动面板.
  • 访问特定XPCOM组件的特定方法.
  • 填写密码字段.
  • 包括首选项窗口.
  • 与Firefox 4.0兼容.

优选地,还:

  • 在Firefox 3.5和3.6上运行.
    • 某些用户不会更新到最新版本.
    • Firefox 4.0无法在PowerPC Mac上运行.
  • 在Firefox 4.0上无需重新启动即可安装.
  • 允许本地化.

我尝试过Add-on SDK(以前称为Jetpack),它使开始开发变得非常容易.但是,我发现HTML无法轻松创建"本机外观"对话框,并且SDK相当重量级.(构建一个简单的扩展需要几千字节;其中包括一个XPCOM组件!)

使用Add-on SDK开发我的Firefox扩展有哪些优缺点?它是否已准备好进行"严肃"的扩展开发?

firefox firefox-addon firefox-addon-sdk

23
推荐指数
1
解决办法
3179
查看次数

Firefox - 确定谁发起了http请求

在我目前的插件中,我拦截了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

23
推荐指数
1
解决办法
642
查看次数

Firefox Addon SDK:向用户显示选项的方法?

我对使用firefox的插件开发很新.我选择了addon sdk来将我的chrome扩展程序移植到firefox.

您建议向用户显示选项页面/选项面板/选项窗口?

从我的addon目录加载options.html文件工作得很好(addTab(data.url("options.html"));),但是我知道不能将page-mod附加到它上面.因此我无法与main.js沟通以保存我的选项,对吧?

用户应该如何访问它?在chrome中这很容易.右键单击您的图标 - >选项,它会为您打开.有没有办法为firefox创建一个simliar行为?

有什么建议吗?

javascript firefox-addon firefox-addon-sdk

17
推荐指数
1
解决办法
3649
查看次数

查找当前选项卡的URL.制作FireFox浏览器插件

我正在制作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 firefox-addon firefox-addon-sdk

13
推荐指数
1
解决办法
7049
查看次数

为什么在javascript中使用var {VariableName} = require('')?

我在Firefox addon-sdk中看到了很多例子,它们在声明变量时使用了以下样式.

var { Hotkey } = require("sdk/hotkeys");
Run Code Online (Sandbox Code Playgroud)

与使用var { Hotkey }相比,它有什么不同var HotKey?为什么要使用额外的花括号?

javascript firefox coding-style firefox-addon-sdk

13
推荐指数
1
解决办法
1149
查看次数

document.activeElement仅适用于Gmail的firefox插件内容脚本

我正在使用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.bodygetWordUnderCaret失败,因为它期望输入/ textarea控制.这适用于所有其他地方.我不确定它为什么指向,document.body因为我可以看到焦点在于输入控件.键入document.activeElementFirebug控制台给了我适当的对象.

或者,我试图自己跟踪活动元素而不是使用document.activeElement.但我遇到了一些问题,比如坚持这个问题.我不能用window它作为window代理来坚持这个.我尝试过,unsafeWindow但无法让它工作.

我想知道为什么这在Gmail中失败了?任何帮助解决这个问题都会很棒!

我的代码可以在Github上找到

编辑

看起来这是addon-sdk的一个问题.我创建了一个Gist,可以用来重现问题.它可以在这里找到

javascript firefox firefox-addon firefox-addon-sdk

12
推荐指数
1
解决办法
1569
查看次数

使用Add-on SDK添加工具栏按钮?为Firefox附加组件集成XUL和附加SDK?

我已经使用Add-on SDK API编写了大部分Firefox插件.我现在发现Add-on SDK可能不够强大,不适合我的目的.我需要两件事:

  1. 位置栏旁边工具栏中的下拉按钮.
  2. 在firefox中修改加载项管理器

这确实令人失望,但我不相信Add-on SDK可以实现这些功能.

首先,我了解widgetAdd-on SDK API中有一个模块.但这只允许我在笨拙的附加栏上添加一个简单的图标或标签.如果我需要为Firebug或Greasemonkey的位置栏旁边添加一个更好的按钮怎么办?至于在firefox中修改附加组件管理器,我已经尝试使用附加SDK的Nickolay Ponomarev的XUL而没有任何成功.如果有人知道如何使这个工作,并指出我的方向是非常有用的(cfx init --template xul当我尝试时,常规SDK没有做任何事情)

firefox xul firefox-addon firefox-addon-sdk

10
推荐指数
1
解决办法
3060
查看次数