Javascript 正在检查System.Gadget.Flyout.file的值

Javascript 正在检查System.Gadget.Flyout.file的值,javascript,windows,windows-desktop-gadgets,Javascript,Windows,Windows Desktop Gadgets,我一直在开发一个Windows边栏小工具,其中有多个弹出页面。当我要显示一个时,我想检查它是否已经处于活动状态,所以我想我可以只检查System.Gadget.Flyout.file的值。但是,当我按下按钮控件时,该弹出按钮会弹出,小工具的背景会消失。在我的调试消息中,我发现脚本在此行所在的位置停止 这是有问题的一句话: if (!System.Gadget.Flyout.show && System.Gadget.Flyout.file != "results.html") {

我一直在开发一个Windows边栏小工具,其中有多个弹出页面。当我要显示一个时,我想检查它是否已经处于活动状态,所以我想我可以只检查System.Gadget.Flyout.file的值。但是,当我按下按钮控件时,该弹出按钮会弹出,小工具的背景会消失。在我的调试消息中,我发现脚本在此行所在的位置停止

这是有问题的一句话:

if (!System.Gadget.Flyout.show && System.Gadget.Flyout.file != "results.html")
{
    ....
}
这很奇怪,因为我可以设置文件,但不能检查它。查看MSDN文档,file属性既是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);
      });
    }
}

这段代码不太可能导致问题。不过,您可以尝试以下方法:

if (System.Gadget.Flyout.document && System.Gadget.Flyout.file != "results.html")
{
    ....
}
var FlyDoc = System.Gadget.Flyout.document;
if (FlyDoc && FlyDoc.location == "x-gadget:///results.html")
{
    ...
}
如果这没有帮助,并且您还没有自己对其进行排序,请发布更多的代码,以便我能够更好地了解发生了什么

已更新

啊,我现在明白了。对不起,当我添加我的原始答案时,我应该对此进行进一步测试。我假设System.Gadget.Flyout.file是一个读/写属性,但这当然太有意义了。System.Gadget.Flyout的文件属性实际上是只写的

作为解决方法,我将使用以下方法:

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

很可能我在2006年遇到了这个错误,因为我以前写过上面的代码,所以请原谅我完全忘记了这个问题,并且在我最初尝试回答这个问题时没有发布正确的解决方案:)

不幸的是,这仍然有一些问题。只要我检查System.Gadget.Flyout.file!=“results.html”,小工具运行该部分代码时,它会中断。同时,我添加了我自己的变量FlyOutResultsRevible,在打开结果弹出时手动设置。请参阅我编辑的文章,了解更多详细的代码。对不起,是我的错。我忘了System.Gadget.Flyout.file是只写的,这意味着它没有get,如果您尝试读取该值,它将抛出错误。文档实际上将属性指定为读/写(get和set)。微软方面发出了巨大的“呜呜”声。请参阅我的更新答案了解解决方法,我将在MS文档中更新我对System.Gadget.Flyout.file的评论:)