Javascript 如何在Firefox插件SDK中将面板位置更改为鼠标位置
我想在屏幕上鼠标的位置显示一个面板Javascript 如何在Firefox插件SDK中将面板位置更改为鼠标位置,javascript,firefox-addon,firefox-addon-sdk,Javascript,Firefox Addon,Firefox Addon Sdk,我想在屏幕上鼠标的位置显示一个面板 Firefox SDK文档不是很详细,我在理解如何更改面板位置时遇到了一些问题。遗憾的是,您不能。如果我查看源代码,Advon SDK总是显示浏览器窗口中间的面板。只有一个未记录的选项可以将面板锚定在某个网页中的某个节点上,但这显然是由于某种原因而未记录的(SDK扩展通常无法获得此类节点)。即使该选项可用,也无法解决您的问题。我猜“最简单”的解决方案是使用packages/addon kit/lib/panel.js并在扩展中使用修改过的版本,其中方法show
Firefox SDK文档不是很详细,我在理解如何更改面板位置时遇到了一些问题。遗憾的是,您不能。如果我查看源代码,Advon SDK总是显示浏览器窗口中间的面板。只有一个未记录的选项可以将面板锚定在某个网页中的某个节点上,但这显然是由于某种原因而未记录的(SDK扩展通常无法获得此类节点)。即使该选项可用,也无法解决您的问题。我猜“最简单”的解决方案是使用
packages/addon kit/lib/panel.js
并在扩展中使用修改过的版本,其中方法show()
可以获取屏幕坐标(此方法底部的openPopup()
调用中的参数x
和y
都是屏幕坐标).我试图在导航栏中创建一个按钮,然后通过它显示一个面板,而不是使用小部件显示绑定到附加工具栏的按钮
为了在导航栏中放置一个按钮,我使用了以下代码:
在他的代码中,您会注意到有一点如下所示:
btn.addEventListener('click', function() {
// do stuff, for example with tabs or pageMod
}, false)
正如Wladimir提到的,您必须将面板锚定到一个元素,因此在单击事件中,我添加了以下内容:
panel.show(utils.getMostRecentBrowserWindow().document.getElementById("myButton"));
我宣布UTIL如下:
var utils = require("sdk/window/utils");
实际上,您可以将锚定到浏览器中的任何元素。例如,可以将其锚定到导航栏:
panel.show(utils.getMostRecentBrowserWindow().document.getElementById("nav-bar"));
或锚定到状态栏,如下所示:
panel.show(utils.getMostRecentBrowserWindow().document.getElementById("statusbar-display"));
希望这对别人有帮助。干杯