我的弹出窗口遇到了麻烦。我的小工具会发生什么,你双击一个组件,它将有一个相应的弹出窗口。但是,如果双击该弹出窗口中的该组件或任何其他可视组件,则弹出文档将返回null。我不知道为什么会这样,如果你让弹出窗口消失并重新打开它或新的它就可以了。只有当弹出窗口已经打开时才会发生这种情况。我正在寻找一些关于它为什么的想法。
双击代码:
Blah.prototype.ondblclick = function()
{
var me = this.parent;
if (System.Gadget.Flyout.show)
{
// flyout is already shown, make sure it shows our stuff
System.Gadget.Flyout.file = FLYOUT_FILE;
onFlyoutShow();
}
else
{
System.Gadget.Flyout.file = FLYOUT_FILE;
System.Gadget.Flyout.onShow = onFlyoutShow;
System.Gadget.Flyout.show = true;
}
System.Gadget.Flyout.onHide = onFlyoutHide;
function onFlyoutShow()
{
me.flyoutOpen = true;
me.updateFlyout();
}
function onFlyoutHide()
{
me.flyoutOpen = false;
}
};
执行代码:
Blah.prototype.updateFlyout = function ()
{
var flyoutDoc = System.Gadget.Flyout.document;
//flyoutDoc is null at this point
var info = flyoutDoc.getElementById("info");
info.innerHTML = "info: " + this.information;
//Error thrown: 'null' is null or not an object
}
答案 0 :(得分:1)
我不太了解为Windows 7编写小工具,但对我而言,它看起来很像计时问题。当弹出窗口已经存在时,您更改file
属性,告诉它加载新文件。无需等待,然后调用onFlyoutShow
,它会尝试获取文档而文档尚未加载。
onShow
事件不会触发吗?可能没有,或者你不会有if,但值得验证。onFlyoutShow
。从一个长计时器开始,比如1000.然后缩短它,希望你可以降到0:setTimeout(onFlyoutShow, 0);