Yeni SDK ile panelimi bir Eklenti yapısında konumlandırmaya çalışıyorum.Firefox Eklentisi SDK ile Panel Konumlandırma
Ben belgeleri bir panelin konumunu kontrol etmek yalnızca bir yol gösterir görüyoruz, ve sizin show()
o zaman bir çapa ileterek geçerli: İdeal
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.
, ben çapa istiyorum Bu pencere öğesi tıklandığında panelin göründüğü pencere öğesi olmak, ancak pencere öğesi bir DOM node in a page
değil, bu yüzden sanırım ...
Muhtemelen bu konuda çalışabilirim ama bir iş bulamıyorum bile paneli DOM düğümüne nasıl bağlayacağınız örneği. Bu gibi port
ile contentScript
bir DOM düğüm geri geçirmek:
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);
});
}
veri/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 });
Elde Aşağıdaki konsol hatası:
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
Bir DOM öğesine başarılı bir şekilde bağlanmanıza yardımcı olacak herhangi bir bilgi veya paneli konumlandırmak için başka bir yol bulmak harika olacaktır.
Teşekkürler. (Maalesef docs Bunun bir örneği bile yoktur)
[ panel : Panel ]
An optional panel to open when the user clicks on the widget. Note: If you also register a "click" listener, it will be called instead of the panel being opened. However, you can show the panel from the listener by calling this.panel.show().
İşte bir örnek:
Yanıtınız için teşekkürler canuckistani, ancak bu, Program aracılığıyla programın açıldığında pencere aracına (veya DOM öğesine) görsel olarak bağlanmasına yardımcı olmaz. – doctororange
Bunun yerine bir DOM Öğesine bir Panel tutturmak istiyorsanız, 1) DOM öğesinde bir tanıtıcıya sahip olmanız gerekir, ardından 2) PanelThingy.show (DOMHandle) – canuckistani
numaralı çağrıya göre, myk'ye göre, "Panel.show()) gerçek bir DOM nesnesini çapa olarak bekler ve iletiler, yüklerini JSON'a serileştirir ve süreç içinde nesne kimliklerini kaldırır. " Bu şekilde, bir DOM nesnesini ana JS'ye geri geçiremezsiniz. İlgili bir hata burada tartışılmaktadır: https://bugzilla.mozilla.org/show_bug.cgi?id=638142 – doctororange