gpt4 book ai didi

firefox-addon-sdk - Addon SDK 制作对话框的方式

转载 作者:行者123 更新时间:2023-12-04 06:47:27 29 4
gpt4 key购买 nike

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

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

最佳答案

好吧,这个答案对于任何对 SDK 有一点经验的人来说应该是显而易见的。我意识到我可以只使用 panel .在我看来,“面板”这个名字在构思这个想法时并不像“对话框”那样清晰,而且我已经习惯了使用带有小部件的面板,以至于我没有想到我可以独立使用它!

编辑

不幸的是,根据 Bug 595040 ,这些对话框不是持久的,这意味着如果面板失去焦点,“对话框”就会消失......所以面板看起来毕竟不是合适的候选人...... :(

编辑2

从那以后,我继续前进,并且让我对 sdk/window/utilsopenDialog 感到满意,我在其返回的窗口上添加了一个加载监听器和然后调用 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');
});

关于firefox-addon-sdk - Addon SDK 制作对话框的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22002010/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com