2011-01-21 38 views
0

我在彈出窗口時遇到了麻煩。我的小工具會發生什麼情況是雙擊某個組件,它將具有相應的彈出窗口。但是,如果雙擊該彈出窗口或任何其他具有彈出窗口的可視組件,則彈出文檔將返回爲空。我不知道這是爲什麼,如果你讓彈出窗口消失並重新打開它或者新的窗口就沒關係。只有當彈出窗口已經打開時,纔會發生這種情況。我正在尋找一些關於這是爲什麼的想法。Windows 7 Gadget Flyout問題

雙擊代碼:

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 
} 

回答

1

我不知道了很多關於編寫小工具爲Windows 7,但對我來說,它看起來很像一個時間問題。當彈出窗口已經存在時,您將更改file屬性,該屬性會指示它加載新文件。不用等待你,然後打電話onFlyoutShow試圖獲得文件和文件尚未加載

  • 我的第一個想法是:事件不會在您設置文件時觸發?可能沒有,或者你不會有,但值得驗證。
  • 如果這不起作用,請在超時中調用onFlyoutShow。開始用長計時器,像1000再縮短,希望你可以踏踏實實地0:setTimeout(onFlyoutShow, 0);
+0

好,先生,你以爲這是個時間問題正確的,因爲setTimeout的解決了這一問題。現在,這是一個問題,如果我能做到「正確」或沒有。目前,+1。 – user535617 2011-01-21 21:26:18