私は、新しいSDKを使用してアドオンメイクの中にパネルを配置しています。FirefoxアドオンSDKを使用したパネルの配置
私はドキュメントは、パネルの位置を制御するだけ方法を示しており、それはあなたがそれをshow()
際にアンカーを渡すことであることがわかり
:
show(anchor)
Displays the panel. [ anchor : handle ]
A handle to a DOM node in a page to which the panel should appear to be anchored. If not given, the panel is centered inside the most recent browser window. Note that it is not currently possible to anchor panels in this way using only the high level APIs.
を理想的には、私はアンカーを希望そのウィジェットがクリックされたときにパネルが固定されているように見えるウィジェットですが、ウィジェットはDOM node in a page
ではないので、私はそう思わないでしょう...
私はおそらくこれを回避することはできますが、パネルをDOMノードにアンカーする方法の例。私はこのようなport
を通じてcontentScript
でのDOMノードをバックパス:
のlib/main.js
var scraper = pageMod.PageMod({
include: ['*'],
contentScriptWhen: 'ready',
contentScriptFile: [data.url('jquery-1.6.2.min.js'), data.url('scraper.js')],
onAttach: function(worker){
worker.port.on('pageLoaded', function(page){
widget.panel.show(page.anchor);
});
}
データ/ scraper.js
$('body').append('
<div id="anchor-to-me" style="position:fixed; bottom: 0; right: 0;">.</div>
');
var anchor = $('#anchor-to-me').get();
self.port.emit('pageLoaded', { anchor : anchor });
私が手次のコンソールエラー:
error: An exception occurred.
Traceback (most recent call last):
File "resource://jid1-wuvxefqtmptsnw-at-jetpack-addon-kit-lib/panel.js", line 147, in show
let document = getWindow(anchor).document;
File "resource://jid1-wuvxefqtmptsnw-at-jetpack-addon-kit-lib/panel.js", line 345, in getWindow
let anchorWindow = anchor.ownerDocument.defaultView.top;
TypeError: anchor.ownerDocument is undefined
DOM要素にアンカーするのに役立つ情報や、パネルを配置するための他の方法を見つけるための情報は素晴らしいものです。
ありがとうございました。
答えてくれてありがとうございますが、これはプログラムで開いたときにパネルをウィジェット(またはDOM要素)に視覚的に固定するのに役立ちません。 – doctororange
代わりにPanelをDOM要素にアンカーしたい場合は、1)DOM要素のハンドルを取得し、2)PanelThingy.show(DOMHandle)を呼び出す必要があります – canuckistani
残念ながらmykによれば、Panel.show実際のDOMオブジェクトをアンカーと想定し、メッセージはペイロードをJSONにシリアル化し、プロセス内でオブジェクトアイデンティティーを取り除きます。 したがって、DOMオブジェクトをメインJSに戻すことはできません。 ここでは関連するバグについて説明しています:https://bugzilla.mozilla.org/show_bug.cgi?id=638142 – doctororange