我已经为此苦苦挣扎了一天多,其中大部分都花在 SO 和 Google 上寻找解决方案并尝试各种事情。
我正在使用 SDK 1.14 并在 Firefox 23 上进行测试。我有一个带有面板的小部件。面板的 contentURL 是数据目录中的本地 HTML 文件。当一个 select 元素被放置在 HTML 中并且用户单击该元素时,整个面板(或至少其内容)移动到浏览器窗口的左上角,从仍然在左下角的面板中看不到的屏幕。我可以说面板(或至少它的内容)移动到浏览器窗口的左上角,因为选项显示在那里。我假设单击选择元素时它绑定到浏览器窗口的原点。
作为一个测试,我将它减少到最小的一个 Widget 和 Panel 与一个选择元素。main.js 代码是:
exports.main = function () {
var self = require('self'),
testPanel = require('panel').Panel({
contentURL: self.data.url('test.html')
});
require('widget').Widget({
label: 'Test Panel',
id: 'TestPanel',
panel: testPanel,
contentURL: self.data.url('images/icon_16.png')
});
};
HTML 是:
<!DOCTYPE html>
<html>
<body>
<select>
<option value='1'>1</option>
</select>
</body>
</html>
当 HTML 最初加载时,选择元素会正确显示在 Widget 的面板中。当我单击选择元素时,选项元素会向上移动到浏览器窗口的左上角。当面板关闭并随后使用小部件的图标重新打开时,面板内容的位置不会重置。