Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Firefox插件SDK中将面板位置更改为鼠标位置_Javascript_Firefox Addon_Firefox Addon Sdk - Fatal编程技术网

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"));
希望这对别人有帮助。干杯