【发布时间】:2011-07-18 02:04:52
【问题描述】:
我正在尝试在使用新 SDK 的附加组件中定位我的面板。
我看到文档只显示了一种方法来控制面板的位置,那就是当你show()它时传递一个锚:
显示(锚)
显示面板。 [锚:句柄]
面板应该出现在的页面中的 DOM 节点的句柄 被锚定。如果没有给出,面板在最里面居中 最近的浏览器窗口。请注意,目前无法 以这种方式锚定面板仅使用高级 API。
理想情况下,我希望锚点是单击该小部件时面板显示为锚定的小部件,但该小部件不是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);
});
}
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 元素或找到其他方式来定位面板的信息都会很棒。
谢谢。
【问题讨论】:
标签: javascript firefox-addon firefox-addon-sdk