Проверка значения System.Gadget.Flyout.file - PullRequest
1 голос
/ 10 сентября 2009

Я работал над гаджетом Windows SideBar, в котором у меня несколько всплывающих страниц. Когда я иду, чтобы отобразить один, я хочу проверить, активен ли он или нет, поэтому я подумал, что я мог бы просто проверить значение 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);
      });
    }
}

1 Ответ

0 голосов
/ 16 октября 2009

Маловероятно, что кусок кода вызывает проблему. Тем не менее, вы можете попробовать что-то вроде следующего:

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 году, как я уже писал выше, поэтому, пожалуйста, прости меня за то, что я полностью забыл об этой проблеме и не опубликовал правильное решение, когда я первоначально пытался ответить на этот вопрос :)

...