2012-04-23 77 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")); 

希望這可以幫助別人。乾杯!