2012-04-23 80 views

回答

2

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

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")); 

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