Addon SDK方式制作对话框

2024-04-14

使用 SDK 制作对话框的正确方法是什么(该对话框不是锚定到附加栏等,而是显示在屏幕中央)?似乎没有任何 API 可以实现这一重要功能。我确实看到了windows/utils has open但我有两个问题:

  1. 打开对话框似乎需要“chrome”特权才能使其在屏幕上居中(我期待附加审阅者抱怨 chrome 特权,即使没有,我也想尝试坚持SDK 方式)。
  2. 虽然我可以获得新的 DOM 窗口引用window/utils' open()对话框,我不确定如何附加内容脚本,以便我可以以提示(并可以响应)特权行为的方式响应用户交互postMessage or port.emit(无需再次,直接使用 chrome privs)。

好的,对于任何有一点 SDK 经验的人来说,这个答案应该是非常明显的。我意识到我可以使用panel https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/panel。在我看来,“面板”这个名字在表达这个想法时并不像“对话框”那么清晰,而且我已经习惯了使用带有小部件的面板,以至于我没有想到我可以独立使用它!

Edit

不幸的是,根据错误 595040 https://bugzilla.mozilla.org/show_bug.cgi?id=595040,这些对话框不是持久的,这意味着如果面板失去焦点,“对话框”就会消失...所以面板看起来毕竟不是合适的候选者...:(

Edit 2

从那时起,我就继续前进,一切工作都令我满意sdk/window/utils and openDialog在其返回的窗口上我添加一个负载侦听器,然后调用tabs.activeTab.on('ready',然后设置tabs.activeTab.url到我的附加本地 HTML 文件,这样ready事件将获得一个选项卡,我可以将工作人员附加到该选项卡。我认为 chrome privs 仍然存在问题,但至少主要通信是使用 SDK 进程。

更新至编辑2:

按请求提供的代码示例:

var data = require('sdk/self').data,
    tabs = require('sdk/tabs');
var win = require('sdk/window/utils').openDialog({
    // No "url" supplied here in this case as we add it below (in order to have a ready listener in place before load which can give us access to the tab worker)
    // For more, see https://developer.mozilla.org/en-US/docs/Web/API/window.open#Position_and_size_features
    features: Object.keys({
        chrome: true, // Needed for centerscreen per docs
        centerscreen: true, // Doesn't seem to be working for some reason (even though it does work when calling via XPCOM)
        resizable: true,
        scrollbars: true
    }).join() + ',width=850,height=650',
    name: "My window name"
    // parent: 
    // args: 
});
win.addEventListener('load', function () {
    tabs.activeTab.on('ready', function (tab) {
        var worker = tab.attach({
            contentScriptFile: ....
            // ...
        });
        // Use worker.port.on, worker.port.emit, etc...
    });
    tabs.activeTab.url = data.url('myHTMLFile.html');
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Addon SDK方式制作对话框 的相关文章

  • 45000 毫秒后无法通过端口 7055 连接到主机 127.0.0.1。带有 FF 版本 26.0 和 selenium 独立 jar 2.39

    我正在尝试连接到我的 AWS unix 计算机上安装的 FF 版本 26 0 的 selenium 2 30 但是当我启动访问 selenium 的客户端时 出现以下错误 另外 当我尝试使用 selenium 独立 jar 2 38 0 进
  • 将信息发送到上下文菜单的内容脚本

    我见过很多有关上下文菜单和双向通信的问题 看来我知道我的问题的答案 你不能 但无论如何我都会尝试 每个页面上都有一个由 page mod 创建的模态 div 该模式旨在当用户将鼠标悬停在文本节点中的单词上以提供单词的翻译时显示 这工作得很好
  • 拦截 Firefox Addon SDK 中的新下载

    我为 Windows 编写了一个简单的下载管理器 我想为 Firefox 创建一个插件 启用后会拦截 Firefox 中的新下载并将它们发送到下载管理器 我已经这样做了谷歌浏览器 using chrome downloads onCreat
  • 如何签署 Firefox 扩展

    我想签署 Firefox 扩展 我在互联网上搜索了有关签署扩展程序的信息并找到了 URLhttps developer mozilla org en docs Signing a XPI https developer mozilla or
  • 将后台脚本添加到 Firefox 附加组件

    我想添加一个文件 background js 它是我的 Firefox 扩展的后台脚本 我使用以下代码将内容脚本添加到我的 main js 中 var panel panels Panel contentURL self data url
  • 从暂存器访问附加 SDK 模块

    我想使用暂存器测试我的附加代码的小片段 在这种情况下 我尝试像这样访问通知模块 const notify require sdk notifications notify My notification s options 正如预期的那样
  • 检测 FF 插件中的导航

    我正在使用 FF Addon SDK 将 Chrome 扩展移植到 FF 在后台脚本 main js 文件中 我需要使用 FF 等效项 chrome webNavigation onBeforeNavigate addListener an
  • FF 扩展 - 获取 xmlhttp.status==0

    我正在为 Firefox 编写一个扩展 它正在使用page mod运行 JavaScript 文件的模块 其中包含 function handleServerResponse if xmlHttp readyState 4 if xmlHt
  • 创建 mozilla 扩展以在其中显示弹出窗口和 iframe

    我正在尝试开发一个 mozilla 扩展 我只需要在弹出窗口中显示 iframe 但不知道该怎么做 我的要求是 在顶部导航工具栏添加扩展按钮 单击扩展按钮时在弹出窗口上显示 iframe 我没有找到任何与此类似的教程 请帮我 谢谢 哈里普拉
  • 带有附加 SDK 的 Firefox 中的自定义上下文菜单?

    我希望向显示的 Firefox 上下文菜单添加一个菜单项 仅当用户右键单击特定 URL 时 我有一个测试 url 的函数 我曾经通过订阅 popupshowing 事件来做到这一点 var item document getElementB
  • 使用 about:config 覆盖 Firefox 不安全警告

    我正在尝试编写一个简单的批处理脚本来截取内部网页的一些屏幕截图 并发现 Firefox 具有将窗口渲染到画布的能力 var canvas document createElement canvas var ctx canvas getCon
  • 评估 XML 中的 XPath 表达式

    使用Add on SDK创建Firefox插件时 如何处理XML文件 使用 XPath 评估会引发错误 XPathResult 未定义 我正在尝试处理用这个代码 var iterator xmlDoc evaluate stream xml
  • 获取 Firefox SDK main.js 中某个文件的内容

    所以我正在开发一个 Firefox 插件 它可以向任何网页的 DOM 添加一些 HTML 这里的想法是我使用一个名为template html作为模板 位于dataaddon 文件夹内的文件夹 接下来 我想使用该内容template htm
  • Firefox 扩展在 main.js 文件中包含脚本

    我正在为 Firefox 编写扩展 但在将脚本包含到 main js 后台 文件中时遇到问题 就我而言 我想包括 jquery js 和 config js 但我不知道如何正确执行它 在我的 chrome 扩展中 我只是在清单文件上执行此操
  • 使用 firefox addon sdk API 防止关闭选项卡

    我正在寻找一种方法来防止使用 firefox addon sdk 关闭选项卡 有办法实现吗 好的 这就是你想要的 以前的版本是为了看看我是否可以让 onbeforeunload 仅在选项卡关闭时触发 但我无法弄清楚 操作方法如下 我们重写了
  • firefox插件SDK不使用新音频播放音频

    我正在开发一个 Firefox 扩展 我希望它在事件发生时播放通知声音 然而 尽管遵循了从 Firefox 扩展的数据目录播放音频 https stackoverflow com questions 16449813 play audio
  • 在 Firefox 插件中访问历史记录

    我正在使用插件生成器开发 Firefox 插件 我想定期扫描浏览器的历史记录 整个历史记录 我正在寻找类似的功能chrome 的历史记录 api http developer chrome com extensions history ht
  • Firefox Addon SDK 中的 HTML5 文件 API

    有没有办法在内容脚本中访问 Firefox addon sdk 中的 Html5 文件 api 这是为了存储用户添加的单词及其含义所必需的 数据可能会变得很大 因此本地存储不是一个选择 window requestFileSystem3 w
  • Addon SDK方式制作对话框

    使用 SDK 制作对话框的正确方法是什么 该对话框不是锚定到附加栏等 而是显示在屏幕中央 似乎没有任何 API 可以实现这一重要功能 我确实看到了windows utils has open但我有两个问题 打开对话框似乎需要 chrome
  • 获取 Firefox 中扩展的附加 ID

    我想在浏览器选项卡中打开扩展作为普通的 html 页面 以便我可以使用 selenium WebDriver 自动化它 在 Firefox 中 可以使用这样的链接来完成 moz extension f1b30486 cd88 4319 bb

随机推荐

  • 使不同纵横比的响应图像具有相同的高度

    我正在尝试找出一种方法 使响应式图像行具有相同的高度 而不管每个图像的纵横比或容器的宽度如何 实际图像文件的高度相同 但宽度不同 问题是 当容器变小时 在某些宽度下 舍入误差会导致图像的高度相差一个或两个像素 这是一个小提琴http jsf
  • 如何向导航栏添加阴影而不是默认边框

    我想替换默认边框UINavigationBar与阴影 有什么办法可以实现这一点吗 我尝试使用与向 UIView 添加阴影相同的方法 但它增加了导航栏的高度 尝试这个 self navigationController navigationB
  • Angular2创建一个显示外部网页内容的组件

    我需要创建一个显示另一个网页内容的组件 例如 如果我有 stackoverflow 站点 我想创建一个组件来执行 http 请求并通过我的应用程序显示内容 顺便说一下 外部网站只是 django rest swagger 要访问它 我每次访
  • 在 Rails 应用程序中使用自定义函数

    我试图遵循以下关于在 Rails 中使用自定义函数的答案中的简短示例 http stackoverflow com questions 2879679 where to put code snippets in rails 在 lib ma
  • SQL查询大约需要10 - 20分钟

    我有一个选择 没什么复杂的 Select from VIEW 该视图大约有 6000 条记录和大约 40 列 它来自 Lotus Notes SQL 数据库 所以我的 ODBC 驱动程序是 LotusNotesSQL 驱动程序 执行该查询大
  • 如何防止触摸空格键时键盘从数字变为字母?

    I have UITextFields在表格上输入值 其中一些字段只接受数字 我在用UIKeyboardTypeNumbersAndPunctuation对于键盘类型 以及shouldChangeCharactersInRange来过滤字符
  • git 我可以加快提交速度吗?

    我在共享文件夹中有一个大存储库 我在该文件夹的虚拟机中使用 git 一切都很好 但存储库很大 git 正在搜索所有目录和文件 当提交缓慢时 我无法将此存储库移出共享文件夹 我尝试过了git add特定文件和目录 但当我这样做时git com
  • 带有通配符的主干事件

    有没有办法监听命名空间的所有事件 所以当我听到这样的事件时 app vent on notification id function type console lof type 它将监听所有这样的事件 app vent trigger no
  • JavaScript - myArray.forEach 与 for 循环的细微差别

    我看到很多建议使用的问题 for var i 0 i lt myArray length i 代替 for var i in myArray 对于数组 由于迭代不一致 see here https stackoverflow com que
  • 在汇编程序中将十进制转换为二进制

    我的第一个汇编程序需要帮助 我必须将用户输入的值从十进制转换为二进制 我不知道如何将值显示为小数 以及下一步应该做什么 谁能一步一步指导我下一步做什么 model small stack 100h data txt1 db Enter bi
  • 使用 zeep / python 创建 XML 序列

    我正在使用 zeep Python 3 6 与 SOAP API 进行交互 并使用包含此部分的 WSDL 架构
  • 如何从元组列表中提取第 n 个元素

    我正在尝试从元组列表中获取第 n 个元素 我有类似的东西 elements 1 1 1 2 3 7 3 5 10 我希望仅将每个元组的第二个元素提取到列表中 seconds 1 3 5 我知道这可以通过for循环 但我想知道是否还有另一种方
  • 如何使用 xamarin 以编程方式制作按钮?

    我正在尝试使用 xamarin ide c 以编程方式创建按钮 我需要什么代码来创建按钮 设置其大小 设置其文本 设置其背景颜色以及设置其约束 有没有办法将按钮定义为屏幕宽度的 1 4 提前致谢 首先创建按钮 UIButton button
  • JavaScript 中的循环函数

    我是 Javascript 新手 我正在寻找一个循环函数 这是Clojure 的实现 http clojuredocs org clojure core clojure core cycle我试图找到一个循环函数 可以无限循环 递归数组的值
  • Android,通过WLAN通话音频流

    我正计划为 Android 开发我的特定 VoIP 应用程序 这是场景 当接到电话时 我想通过本地电脑扬声器听到打电话的人的声音 并且我想通过我自己的电脑麦克风 耳机与他通话 所以我需要通过无线局域网发送我和我正在通话的人的音频流 像这样的
  • RFC 4648(Base[16,32,64])在 Matlab 中的实现

    有没有任何实施RFC4648 https tools ietf org html rfc4648 Base16 Base32 和 Base64 数据编码 Matlab 中 在 MATLAB 中您可以轻松使用嵌入式Java 功能 http w
  • Kubernetes Node 中的内核内存使用率较高

    我非常绝望地寻找解决方案 我正在 AWS 上运行 Kubernetes 集群 v1 16 7 节点规格为 它是一个亚马逊 EC2 t3 medium实例与4GB RAM和 AMI k8s 1 11 debian stretch amd64
  • YAP Prolog 中的正向链接?

    我需要在某些 Prolog 问题中使用前向链接器 我想避免使用普通元解释器从头开始实现它 但如果没有其他选项可用 这就是我必须要做的 因为使用元解释器执行此操作会很慢 而且我我确信应该有一些好的实现 有人知道 YAP 或 SWI Prolo
  • 通过 TCP 客户端套接字接收数据时出现问题

    我正在尝试用 C 语言编写一个 TCP 客户端程序 客户端将在其中启动 连接到服务器 然后它会发送一些信息 然后监听它收到的信息并做出相应的反应 我遇到麻烦的部分是持续聆听 这是我所拥有的 while 1 numbytes recv soc
  • Addon SDK方式制作对话框

    使用 SDK 制作对话框的正确方法是什么 该对话框不是锚定到附加栏等 而是显示在屏幕中央 似乎没有任何 API 可以实现这一重要功能 我确实看到了windows utils has open但我有两个问题 打开对话框似乎需要 chrome