Уведомление о закрытии всплывающего окна с помощью Silverlight HtmlPage.PopupWindow () - PullRequest
1 голос
/ 28 апреля 2010

Я выскакиваю HTML-страницу из приложения Silverlight, используя метод HtmlPage.PopupWindow(). Я пытаюсь обработать событие, когда всплывающее окно закрывается изнутри Silverlight. Вот как я пытаюсь это сделать:

 var window = HtmlPage.PopupWindow(new Uri("http://mypopup..."), "popup", options);

 EventHandler<HtmlEventArgs> windowClosed = (sender, e) =>
 {
     // would like to refresh the page when popup is closed...
     HtmlPage.Document.Submit();
 };

 window.AttachEvent("onUnload", windowClosed);

Однако обработчик событий, кажется, никогда не вызывается. Это возможно или я что-то упустил?

Приложение Silverlight и всплывающая страница HTML находятся в одном домене, однако на самом деле они находятся на разных портах. Я думал, что, возможно, страницы, находящиеся на разных портах, будут рассматриваться как межсайтовое ограничение и вызывать сбой JavaScript.

Ответы [ 3 ]

1 голос
/ 13 августа 2010

У вас очень маленькая ошибка в названии события :) замените "onUnload" на "onunload" и попробуйте снова

0 голосов
/ 28 апреля 2010

Вы правы, изменение номера порта достаточно, чтобы предотвратить доступ Silverlight к событиям и содержимому всплывающего окна.

0 голосов
/ 28 апреля 2010

Ваше событие onUnload должно быть определено во всплывающем окне, а не в родительском / открывающем окне, чтобы обнаружить любые действия, выполненные в дочернем окне. Во всплывающем окне вы будете отслеживать действия в этом окне и отправлять вызов родителю / открывателю для обновления статуса. С помощью этого вызова вы также передадите любые значения, которые вам нужны, в это окно, так как вы не можете прочитать данные дочернего окна из родительского / открывателя.

Если страница является фреймом целевой страницы, вы должны использовать parent; как в parent.functionname(data);. Если страница является отдельным окном целевой страницы, вы бы использовали открывашку; как в opener.functionname(data);.

...