问题标签 [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.
javascript - 利用 Firefox 的默认/内置事件监听器
我有一个上下文菜单项,如果右键单击图像,它就会被激活,与激活的方式完全相同'context-copyimage'
。
是否可以将该菜单项绑定/配对,'context-copyimage'
从而消除添加额外(重复)事件侦听器和显示/隐藏处理程序的需要??!!
(添加观察者会'context-copyimage'
破坏目的)
如果没有,是否可以使用使用的事件侦听'context-copyimage'
器?
更新:
我正在尝试减少听众。目前,脚本有一个popupshowing
听众。On popupshowing
,它检查是否为gContextMenu.onImag
真,如果为真,则显示菜单项。Firefox 的context-copyimage
做法完全相同。我想知道是否有可能将这两个绑定以删除/减少脚本内事件侦听器。
我也在和Dagger聊天,他说:
...内置项目的状态不是从事件处理程序中设置的,而是从 nsContextMenu 的构造函数中设置的,并且没有任何机制可以挂钩
看来,这是不可能的
javascript - Firefox 插件读取本地 XPI、文件和目录列表
在#amo-editors 中聊天后,我想知道是否可以通过 Firefox 插件实现以下功能:
- 打开本地 XPI 进行读取
- 列出以上 XPI 中的所有文件及其大小
- 读取选定的文件
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:
我的目标是加快开发过程,而不必为每次代码更改重新启动浏览器。这是一个相关的帖子,但似乎是一个过时的帖子。
javascript - 为什么在 Firefox Addon 中导入的对象无法访问导入器的导入模块?
为澄清起见,请考虑以下简化示例:
one.js
二.js
我知道这就是它的工作原理,但问题是为什么?
结果是例如Services.jsm
必须在每个模块中传授。
虽然火狐缓存了模块,性能差别不大,但我想知道是否可以避免重复导入?
javascript - Firefox 插件:上传图片
我想从 Firefox 插件将图像上传到站点。
我知道我可以createElement('canvas')
,将图像数据转换为 base64 和 XHR POST 数据,但我想看看是否可以让 Firefox 处理它。
通常,用户会在网站上点击浏览,Firefox 会打开File Upload
对话框,选择文件,然后点击打开。
我想从上下文菜单中自动执行该操作,以便可以将浏览器打开的本地文件(即图像)直接上传到目的地。
这可能吗?怎么做?
澄清:
在通过 Firefox 上传的文件选择中,这些是必需的数据:
- 目标表单
- 本地文件位置
- 附加到文件上传对话框中打开按钮的操作
在我想创建的上下文菜单情况下:
-目标表单:将在脚本中进行硬编码
-本地文件位置:右键单击的文件(即gContextMenu.target.src
)
-操作:这是我想要的执行并将“命令”附加到上述按钮的功能(现有的 Firefox 功能)
这意味着,不是手动创建new XMLHttpRequest()
和发布数据,而是使用 Firefox 的现有功能。
换句话说,手动将“目标表单”和“本地文件位置”提供给 FILE UPLOAD 的 OPEN 按钮功能,就好像这是执行的过程一样。
javascript - XMLHttpRequest POST 并在新窗口/选项卡中打开目标页面
您如何使用in模拟 Form 的'POST'
操作?(即发布数据并在新选项卡中打开目标页面)target="_blank"
XMLHttpRequest
javascript - 如何将本地 URI 转换为路径?
如何将本地(文件系统)URI 转换为路径?
它可以用nsIIOService
++来完成,newURI()
但这似乎还有很长的路要走。
有没有更短的方法?QueryInterface(Components.interfaces.nsIFileURL)
file.path
这是一个示例代码:
javascript - 在 boostrap 插件中卸载惰性吸气剂?
在我的顶部,我bootstrap.js
定义了一堆lazyGetter
s,而不是 JSM:
我听说你必须unload
导入模块。但是你为lazyGetter
s 创建的“模块”呢?我将如何卸载那些?我会做一个delete myServices
吗?
如果我执行一个全局变量delete
,myServices
这是否意味着我应该在卸载时删除所有全局变量?
我在这里读到:忘记在无需重启的附加组件中卸载 JavaScript 模块
忘记在无需重启的附加组件中卸载 JavaScript 模块
泄漏的另一个常见原因是忘记在引导加载项中卸载 JavaScript 代码模块。通过查看 about:compartments 或 about:memory 无法检测到这些泄漏,因为此类模块位于主系统隔间内。
此外,当您的插件更新并重新启用时,将使用仍加载的先前模块版本,这可能会完全破坏您的插件。
以下示例显示了如何再次卸载模块 (bootstrap.js):
注意:不属于您的附加组件的模块(例如 Services.jsm)不应由您的附加组件卸载,因为这可能会导致错误和/或性能下降,并且实际上会增加内存使用量。
javascript - 使用 HTTP-on-modify-request 重定向 URL
我正在为 Firefox 构建一个附加组件,如果 URL 匹配某些条件,它将请求重定向到新 URL。我已经尝试过了,但它不起作用。
我在 HTTP-on-modify-request 上注册了一个观察者来处理 URL,如果 URL 符合我的条件,我将重定向到一个新的 URL。
这是我的代码:
我是 Firefox 插件开发的新手。
javascript - 如何知道加载的窗口是 Firefox Electrolysis Window
我想为 Firefox 电解窗口编写一个功能。但是我怎么知道加载的窗口是 Firefox Electrolysis 窗口而不是普通的 Firefox 窗口呢?
您可以使用 Scratchpad 中的代码。评论
是我需要检测加载窗口的地方是 Firefox Electrolysis 窗口,而不是普通的 Firefox 窗口。