Несмотря на то, что изначально гаджеты Windows Desktop были исключены из ограничений Одинаковой политики происхождения , это относится только к XMLHttpRequests.Если <iframe>
указывает на страницу на www, то любая связь между страницей в рамке и гаджетом хостинга будет заблокирована.Если это так, то вы могли бы иметь возможность использовать метод междоменной связи, который основан на изменении hash
самого верхнего окна.Внутри фрейма вы бы сделали что-то вроде этого:
window.top.location.hash = "#ShowFlyout";
Затем в коде для гаджета вы получите что-то вроде этого:
window.setInterval(function () {
if (window.location.hash == "#ShowFlyout") {
window.location.hash = "";
System.Gadget.Flyout.file = "flyout.htm";
System.Gadget.Flyout.show = true;
}
}, 100);
Я неУ меня под рукой есть машина с Windows, чтобы протестировать ее прямо сейчас, но вы все равно можете попробовать.
Если iframe указывает на html-документ на локальном компьютере, то вы сможете получить доступ к глобальной System
переменная как член самого верхнего оконного объекта - гаджета, например:
var System = window.top.System;
System.Gadget.Flyout.file = "some.htm";
System.Gadget.Flyout.show = true;
Или, также предполагая, что у вас есть контроль над содержимым выпадающего меню, вы можете установить обработчик событий для всехссылки с JQuery (так как вы пометили его):
$("a", iframe.contentWindow.document).click(function () {
System.Gadget.Flyout.file = this.href;
System.Gadget.Flyout.show = true;
});