如何在火狐附加组件SDK中将面板位置更改为鼠标位置
How to change the panel position to mouse position in Firefox Add-on SDK
我希望在鼠标在屏幕上的位置显示一个面板。
Firefox SDK 文档不是很详细,我在了解如何更改面板位置时遇到了一些问题。
可悲的是,你不能。如果我查看源代码,附加 SDK 总是在浏览器窗口中间显示面板。只有一个未记录的选项可以将面板锚定在某些网页中的节点上,但这显然是有原因的(SDK 扩展通常无法掌握此类节点)。即使该选项可用,也无法解决您的问题。我想"最简单的"解决方案是采用packages/addon-kit/lib/panel.js
并在扩展中使用修改后的版本,其中方法show()
可以获取屏幕坐标(此方法底部的openPopup()
调用中的参数x
和y
是屏幕坐标)。
我试图在导航栏中创建一个按钮,然后通过它显示一个面板,而不是使用小部件来显示一个按钮,因为它与插件工具栏相关联。
为了在导航栏中放置一个按钮,我在这里使用了代码:
http://kendsnyder.com/posts/firefox-extensions-add-button-to-nav-bar
在他的代码中,您会注意到有一点看起来像这样:
btn.addEventListener('click', function() {
// do stuff, for example with tabs or pageMod
}, false)
正如 Wladimir 提到的,您必须将面板锚定到一个元素,因此在单击事件中我添加了以下内容:
panel.show(utils.getMostRecentBrowserWindow().document.getElementById("myButton"));
我声明了这样的实用程序:
var utils = require("sdk/window/utils");
您实际上可以将面板锚定到浏览器中的任何元素。例如,可以将其定位到导航栏:
panel.show(utils.getMostRecentBrowserWindow().document.getElementById("nav-bar"));
或锚定到状态栏,如下所示:
panel.show(utils.getMostRecentBrowserWindow().document.getElementById("statusbar-display"));
希望这对某人有所帮助。干杯!
相关文章:
- 跟踪jqplot垂直折线图的鼠标位置
- Javascript-在视频中跟踪鼠标位置
- 打开相对于鼠标位置的CSS3/HTML5模式对话框
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 如何在鼠标悬停时将对象从起始位置移动到结束位置,然后在鼠标悬停后再次移动
- 如何控制quadraticCurve使用鼠标位置控制位置
- 从鼠标点(及更多)查询位置元素
- 在鼠标上触发鼠标移动'的当前位置
- Javascript如何在不使用画布的情况下获取鼠标位置
- jQuery根据鼠标位置计算DIV偏移量和边界
- 在火狐浏览器的画布上获取鼠标位置
- 尝试绘制从鼠标位置工具栏中选择的形状 - HTML5 CANVAS
- Kinectjs在画布上鼠标向下位置的准确性和clearRect未按预期工作
- Three.js-查找鼠标最后位置和当前位置之间的所有交点
- 在鼠标滚动上将页面内容滚动到自定义位置
- 添加视图框时更改鼠标位置
- Javascript/Canvas-查找相对于坐标网格位置的鼠标坐标
- 如何在鼠标位置获取所有元素
- 鼠标在HTML 5响应画布中的位置
- 查找事件的位置(鼠标悬停在按钮上),用于Firefox扩展