Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Windows7小工具弹出式问题_Javascript_Windows Desktop Gadgets_Flyout - Fatal编程技术网

Javascript Windows7小工具弹出式问题

Javascript Windows7小工具弹出式问题,javascript,windows-desktop-gadgets,flyout,Javascript,Windows Desktop Gadgets,Flyout,我的弹出按钮有问题。我的小工具发生的事情是双击一个组件,它将有一个相应的弹出窗口。但是,如果双击该组件或带有弹出按钮的任何其他可视组件,弹出按钮文档将返回为null。我不知道这是为什么,如果你让弹出按钮离开,重新打开它或一个新的,它是好的。只有当弹出按钮已打开时,才会发生这种情况。我想知道为什么会这样 双击代码: Blah.prototype.ondblclick = function() { var me = this.parent; if (System.Gadget.F

我的弹出按钮有问题。我的小工具发生的事情是双击一个组件,它将有一个相应的弹出窗口。但是,如果双击该组件或带有弹出按钮的任何其他可视组件,弹出按钮文档将返回为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
}

我对为Windows7编写小工具知之甚少,但对我来说,这看起来很像一个时间问题。当弹出按钮已经存在时,可以更改告诉它加载新文件的
文件
属性。不必等待,然后调用
onFlyoutShow
,它将尝试获取文档,但文档尚未加载

  • 我的第一个想法是:设置文件时,
    onShow
    事件不会触发吗?可能没有,或者你不会有,如果,但值得验证
  • 如果不起作用,请在超时时调用
    onFlyoutShow
    。从一个长定时器开始,比如1000。然后缩短它,希望您可以降到0:
    setTimeout(onFlyoutShow,0)

先生,您认为这是一个计时问题是正确的,因为setTimeout解决了这个问题。现在的问题是我能不能用“正确”的方法来做。目前,+1。我不相信有正确的方法。System.Gadget.Flyout()的文档不再列出任何事件。如果您可以将超时设置为0,那么这将是您所能得到的最正确的结果。@user,@Hemlock:最好的方法是使用回调系统。Gadget中的代码定义了一个函数,当弹出按钮中的JavaScript代码执行时,它会在Gadget窗口中调用该函数,以便它能够正确地执行其业务。计时器可能不可靠,因为某些因素可能会延迟计时器的执行或延迟弹出按钮在时间执行之前的加载。