2

我希望在鼠标在屏幕上的位置显示一个面板。

Firefox SDK 文档不是很详细,我在理解如何更改面板位置时遇到了一些问题。

4

2 回答 2

2

可悲的是,你不能。如果我查看源代码,插件 SDK 总是在浏览器窗口的中间显示面板。只有一个未记录的选项可以将面板锚定在某些网页的节点上,但这显然是未记录的原因(SDK 扩展通常无法获取此类节点)。即使该选项可用,也无法解决您的问题。我猜“最简单”的解决方案是packages/addon-kit/lib/panel.js在您的扩展中采用并使用修改后的版本,该方法show()可以采用屏幕坐标(该方法底部的参数x和调用y中的参数是屏幕坐标)。openPopup()

于 2012-04-23T11:43:28.300 回答
0

我试图在导航栏中创建一个按钮,然后通过它显示一个面板,而不是使用一个小部件来显示一个按钮,因为它与插件工具栏相关联。

为了在导航栏中放置一个按钮,我在这里使用了代码:

http://kendsnyder.com/posts/firefox-extensions-add-button-to-nav-bar

在他的代码中,您会注意到有一点看起来像这样:

    btn.addEventListener('click', function() {
    // do stuff, for example with tabs or pageMod
}, false)

正如弗拉基米尔提到的,您必须将面板锚定到一个元素,因此在点击事件中我添加了以下内容:

panel.show(utils.getMostRecentBrowserWindow().document.getElementById("myButton"));

我这样声明了 utils:

var utils = require("sdk/window/utils");

您实际上可以将Panel锚定到浏览器中的任何元素。例如,您可以将其锚定到导航栏:

 panel.show(utils.getMostRecentBrowserWindow().document.getElementById("nav-bar"));

或锚定到状态栏,如下所示:

panel.show(utils.getMostRecentBrowserWindow().document.getElementById("statusbar-display"));

希望这可以帮助某人。干杯!

于 2013-08-30T04:25:28.670 回答