问题标签 [firefox-addon-restartless]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
104 浏览

javascript - 利用 Firefox 的默认/内置事件监听器

我有一个上下文菜单项,如果右键单击图像,它就会被激活,与激活的方式完全相同'context-copyimage'

是否可以将该菜单项绑定/配对,'context-copyimage'从而消除添加额外(重复)事件侦听器和显示/隐藏处理程序的需要??!!
(添加观察者会'context-copyimage'破坏目的)

如果没有,是否可以使用使用的事件侦听'context-copyimage'器?

更新:
我正在尝试减少听众。目前,脚本有一个popupshowing听众。On popupshowing,它检查是否为gContextMenu.onImag真,如果为真,则显示菜单项。Firefox 的context-copyimage做法完全相同。我想知道是否有可能将这两个绑定以删除/减少脚本内事件侦听器。

我也在和Dagger聊天,他说:

...内置项目的状态不是从事件处理程序中设置的,而是从 nsContextMenu 的构造函数中设置的,并且没有任何机制可以挂钩

看来,这是不可能的

0 投票
1 回答
532 浏览

javascript - Firefox 插件读取本地 XPI、文件和目录列表

在#amo-editors 中聊天后,我想知道是否可以通过 Firefox 插件实现以下功能:

  1. 打开本地 XPI 进行读取
  2. 列出以上 XPI 中的所有文件及其大小
  3. 读取选定的文件
0 投票
1 回答
687 浏览

javascript - firefox 无重启引导扩展脚本未重新加载

如果不重新启动 Firefox,我无法在 Firefox 扩展中反映源代码修改。我相信这在使用引导方法时应该是可能的。

这是源代码:
bootstrap.js

加载器.js

当我在加载程序中更改消息时,它不会反映在 Firefox(版本 30)中。我在配置文件扩展文件夹中有一个文件“goog@myself.com”,其中包含我的开发文件夹的路径。当我从 about:extensions 页面启用/禁用或删除/撤消时,我对 loader.js 所做的更改不会反映出来,除非我重新启动 firefox。任何关于为什么代码没有动态加载的指针都会有所帮助。

我对使用 SDK 进行开发不感兴趣。我还设置了各种标志,如https://developer.mozilla.org/en-US/Add-ons/Setting_up_extension_development_environment中所述

编辑1:

这是我用来测试场景的打包为 xpi(1.35KB) 的上述代码的链接。https://www.dropbox.com/s/0io8b081ybu632q/test.xpi

编辑2:

我的目标是加快开发过程,而不必为每次代码更改重新启动浏览器。这是一个相关的帖子,但似乎是一个过时的帖子。

0 投票
1 回答
57 浏览

javascript - 为什么在 Firefox Addon 中导入的对象无法访问导入器的导入模块?

为澄清起见,请考虑以下简化示例:

one.js

二.js

我知道这就是它的工作原理,但问题是为什么?
结果是例如Services.jsm必须在每个模块中传授。
虽然火狐缓存了模块,性能差别不大,但我想知道是否可以避免重复导入?

0 投票
1 回答
380 浏览

javascript - Firefox 插件:上传图片

我想从 Firefox 插件将图像上传到站点。

我知道我可以createElement('canvas'),将图像数据转换为 base64 和 XHR POST 数据,但我想看看是否可以让 Firefox 处理它。

通常,用户会在网站上点击浏览,Firefox 会打开File Upload对话框,选择文件,然后点击打开。

我想从上下文菜单中自动执行该操作,以便可以将浏览器打开的本地文件(即图像)直接上传到目的地。

这可能吗?怎么做?

澄清:

在通过 Firefox 上传的文件选择中,这些是必需的数据:
- 目标表单
- 本地文件位置
- 附加到文件上传对话框中打开按钮的操作

在我想创建的上下文菜单情况下:
-目标表单:将在脚本中进行硬编码
-本地文件位置:右键单击的文件(即gContextMenu.target.src
-操作:这是我想要的执行并将“命令”附加到上述按钮的功能(现有的 Firefox 功能)

这意味着,不是手动创建new XMLHttpRequest()和发布数据,而是使用 Firefox 的现有功能。

换句话说,手动将“目标表单”和“本地文件位置”提供给 FILE UPLOAD 的 OPEN 按钮功能,就好像这是执行的过程一样。

文件上传对话框

0 投票
1 回答
2048 浏览

javascript - XMLHttpRequest POST 并在新窗口/选项卡中打开目标页面

您如何使用in模拟 Form 的'POST'操作?(即发布数据并在新选项卡中打开目标页面)target="_blank"XMLHttpRequest

0 投票
1 回答
22622 浏览

javascript - 如何将本地 URI 转换为路径?

如何将本地(文件系统)URI 转换为路径?
它可以用nsIIOService++来完成,newURI()但这似乎还有很长的路要走。 有没有更短的方法?QueryInterface(Components.interfaces.nsIFileURL)file.path

这是一个示例代码:

0 投票
1 回答
99 浏览

javascript - 在 boostrap 插件中卸载惰性吸气剂?

在我的顶部,我bootstrap.js定义了一堆lazyGetters,而不是 JSM:

我听说你必须unload导入模块。但是你为lazyGetters 创建的“模块”呢?我将如何卸载那些?我会做一个delete myServices吗?

如果我执行一个全局变量deletemyServices这是否意味着我应该在卸载时删除所有全局变量?

我在这里读到:忘记在无需重启的附加组件中卸载 JavaScript 模块

忘记在无需重启的附加组件中卸载 JavaScript 模块

泄漏的另一个常见原因是忘记在引导加载项中卸载 JavaScript 代码模块。通过查看 about:compartments 或 about:memory 无法检测到这些泄漏,因为此类模块位于主系统隔间内。

此外,当您的插件更新并重新启用时,将使用仍加载的先前模块版本,这可能会完全破坏您的插件。

以下示例显示了如何再次卸载模块 (bootstrap.js):

注意:不属于您的附加组件的模块(例如 Services.jsm)不应由您的附加组件卸载,因为这可能会导致错误和/或性能下降,并且实际上会增加内存使用量。

0 投票
2 回答
2337 浏览

javascript - 使用 HTTP-on-modify-request 重定向 URL

我正在为 Firefox 构建一个附加组件,如果 URL 匹配某些条件,它将请求重定向到新 URL。我已经尝试过了,但它不起作用。

我在 HTTP-on-modify-request 上注册了一个观察者来处理 URL,如果 URL 符合我的条件,我将重定向到一个新的 URL。

这是我的代码:

我是 Firefox 插件开发的新手。

0 投票
1 回答
219 浏览

javascript - 如何知道加载的窗口是 Firefox Electrolysis Window

我想为 Firefox 电解窗口编写一个功能。但是我怎么知道加载的窗口是 Firefox Electrolysis 窗口而不是普通的 Firefox 窗口呢?

您可以使用 Scratchpad 中的代码。评论

是我需要检测加载窗口的地方是 Firefox Electrolysis 窗口,而不是普通的 Firefox 窗口。