1

複数のフライアウトページがあるWindowsSideBarガジェットに取り組んでいます。表示するときに、すでにアクティブになっているかどうかを確認したいので、System.Gadget.Flyout.fileの値を確認するだけでいいのではないかと思いました。ただし、このフライアウトが飛び出すボタンコントロールを押すと、ガジェットの背景が消えます。デバッグメッセージで、この行がある場所でスクリプトが停止することがわかりました。

問題の行は次のとおりです。

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

ファイルを設定することはできますが、チェックすることはできないので、これはかなり奇妙です。また、MSDNのドキュメントを見ると、ファイルのプロパティはゲッターとセッターの両方であるため、問題はありません。現在アクティブなファイル/ドキュメントを確認するために使用できるソリューションはありますか?

編集-コードの詳細は次のとおりです。

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);
      });
    }
}
4

1 に答える 1

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")
{
    ...
}

以前に上記のコードを書いたので、2006年にこのバグに遭遇した可能性があります。この質問に最初に答えようとしたときに、この問題を完全に忘れて、正しい解決策を投稿しなかったことをお許しください:)

于 2009-10-16T14:22:51.930 に答える