使用Silverlight的HtmlPage.PopupWindow()关闭弹出窗口时的通知

时间:2010-04-28 17:45:40

标签: silverlight javascript-events popup htmlbridge

我正在使用HtmlPage.PopupWindow()方法从Silverlight应用程序中弹出一个HTML页面。我正在尝试处理从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 个答案:

答案 0 :(得分:1)

你在事件名称中有一个非常小的错误:) 通过“onunload”更改“onUnload”并再试一次

答案 1 :(得分:0)

必须在弹出窗口而不是父/开启窗口中定义您的onUnload事件,以检测对子窗口所做的任何操作。在弹出窗口中,您将跟踪该窗口中的操作,并向父/开启者发送呼叫以进行状态更新。通过此调用,您还可以将所需的任何值传递给该窗口,因为您无法从父/开启器中读取子窗口的数据。

如果页面是目标页面的iframe,那么您将使用parent;与parent.functionname(data);中一样。如果页面是目标页面的单独窗口,则使用opener;与opener.functionname(data);中一样。

答案 2 :(得分:0)

您是对的,端口号的变化足以阻止Silverlight访问弹出窗口的事件和内容。