1

我正在使用该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 失败。

4

3 回答 3

1

您在事件名称中有一个非常非常小的错误 :) 将“onUnload”更改为“onunload”,然后重试

于 2010-08-13T12:41:27.243 回答
0

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

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

于 2010-04-28T18:04:25.443 回答
0

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

于 2010-04-28T19:56:29.913 回答