我正在使用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失败。
答案 0 :(得分:1)
你在事件名称中有一个非常小的错误:) 通过“onunload”更改“onUnload”并再试一次
答案 1 :(得分:0)
必须在弹出窗口而不是父/开启窗口中定义您的onUnload
事件,以检测对子窗口所做的任何操作。在弹出窗口中,您将跟踪该窗口中的操作,并向父/开启者发送呼叫以进行状态更新。通过此调用,您还可以将所需的任何值传递给该窗口,因为您无法从父/开启器中读取子窗口的数据。
如果页面是目标页面的iframe,那么您将使用parent;与parent.functionname(data);
中一样。如果页面是目标页面的单独窗口,则使用opener;与opener.functionname(data);
中一样。
答案 2 :(得分:0)
您是对的,端口号的变化足以阻止Silverlight访问弹出窗口的事件和内容。