2009-09-09 27 views
1

我一直在使用Windows SideBar Gadget,其中有多個彈出頁面。當我去顯示一個,我想檢查它是否已經激活,所以我想我可以檢查System.Gadget.Flyout.file的值。但是,當我按下導致此彈出窗口彈出的按鈕控件時,小工具的背景消失。在我的調試消息中,我發現腳本停止了該行的位置。檢查System.Gadget.Flyout.file的值

這裏是有問題的行:

if (!System.Gadget.Flyout.show && System.Gadget.Flyout.file != "results.html") 
{ 
    .... 
} 

這是很奇怪的,因爲我可以設置該文件,但不檢查。查看MSDN文檔,文件屬性既是一個getter也是一個setter,所以應該沒有問題。任何人都有我可以使用的解決方案來檢查哪些文件/文檔當前處於活動狀態?

編輯 - 這是在代碼的更多詳細信息:

function ShowResults(event) 
{  
    var searchString = $.trim($("#searchInput").val()); 

    if (!System.Gadget.Flyout.show || !gFlyoutResultsAreVisible) 
    { 
     // Load up the results page into the flyout 
     System.Gadget.Flyout.file = "results.html"; 
     System.Gadget.Flyout.show = true; 

     System.Gadget.Flyout.document.parentWindow.attachEvent("onload", function() 
     { 
     System.Gadget.Flyout.document.parentWindow.PerformSearch(searchString); 
     }); 
    } 
} 

回答

0

這是不太可能的一段代碼導致了問題。不過,你可以嘗試像以下:

if (System.Gadget.Flyout.document && System.Gadget.Flyout.file != "results.html") 
{ 
    .... 
} 

如果不幫助你,你沒有設法自己還沒有對它進行排序,請發表多一點的代碼,所以我可以更好地瞭解這是怎麼回事上。

修訂

啊,我現在看到。對不起,當我添加我的原始答案時,我應該進一步測試。我認爲System.Gadget.Flyout.file是一個讀/寫屬性,但當然這隻會產生太大的意義。 System.Gadget.Flyout的文件屬性實際上是只寫

作爲一種變通方法,我會用以下內容:

var FlyDoc = System.Gadget.Flyout.document; 
if (FlyDoc && FlyDoc.location == "x-gadget:///results.html") 
{ 
    ... 
} 

這可能是因爲我碰到了這個bug在2006年,因爲我以前寫上面的代碼,所以請原諒我完全忘記了這個問題,並沒有發佈正確的解決方案,當我最初試圖回答這個問題:)

+0

不幸的是,這仍然有一些問題。只要我對System.Gadget.Flyout.file!=「results.html」進行檢查,並且小工具運行該代碼段,它就會中斷。 與此同時,我添加了自己的變量flyoutResultsAreVisible,這是我在打開結果展開工具時手動設置的。查看我編輯的帖子以獲取更詳細的代碼。 – 2009-11-17 22:23:26

+0

對不起,我的錯。我忘了System.Gadget.Flyout.file是**只寫**,這意味着它沒有get,並且如果嘗試讀取值,將會引發錯誤。該文檔實際上指定該屬性爲讀/寫(獲取和設置)。對微軟來說,這是一個很大的「who」「。看到我的解決方案的更新答案,我會更新我對MS文檔中System.Gadget.Flyout.file的評論:) – 2009-11-19 15:15:42