我正在尝试在使用新的SDK创建的Add-on中定位我的面板。
我发现文档只显示了一种控制面板位置的方法,就是在show()
时传递一个锚点:
show(anchor)
显示面板。[ anchor : handle ]
应将面板定位到页面上的DOM节点的句柄。如果未提供,则面板居中于最近的浏览器窗口内。请注意,目前无法仅使用高级API来以这种方式将面板锚定。
理想情况下,当单击小部件时,我希望将其固定为面板出现的小部件,但是小部件不是“页面上的DOM节点”,所以我猜不行......
我可能可以解决此问题,但我甚至找不到如何将面板固定到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);
});
}
data/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元素或找到其他位置面板的方法都会很好。谢谢。