Javascript 使用Silverlight';关闭弹出窗口时发出通知;s HtmlPage.PopupWindow()

Javascript 使用Silverlight';关闭弹出窗口时发出通知;s HtmlPage.PopupWindow(),javascript,silverlight,popup,dom-events,htmlbridge,Javascript,Silverlight,Popup,Dom Events,Htmlbridge,我正在使用HtmlPage.PopupWindow()方法从Silverlight应用程序弹出一个HTML页面。我正在尝试处理从Silverlight中关闭弹出窗口的事件。我正试图这样做: var window = HtmlPage.PopupWindow(new Uri("http://mypopup..."), "popup", options); EventHandler<HtmlEventArgs> windowClosed = (sender, e) => {

我正在使用
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);
var window=HtmlPage.PopupWindow(新Uri(“http://mypopup...“弹出”,选项);
EventHandler windowClosed=(发件人,e)=>
{
//想在弹出窗口关闭时刷新页面。。。
HtmlPage.Document.Submit();
};
window.AttachEvent(“onUnload”,windowClosed);
然而,事件处理程序似乎从未被调用。这是可能的还是我遗漏了什么


Silverlight应用程序和HTML弹出页面位于同一个域中,但它们实际上位于不同的端口上。我在想,不同端口上的页面可能会被视为跨站点限制,并导致JavaScript失败。

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


如果页面是目标页面的iframe,那么您将使用parent;如
parent.functionname(数据)中所示。如果页面是目标页面的一个单独窗口,则使用opener;如
opener.functionname(数据)中所示

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


如果页面是目标页面的iframe,那么您将使用parent;如
parent.functionname(数据)中所示。如果页面是目标页面的一个单独窗口,则使用opener;如
opener.functionname(数据)中所示

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

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

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

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

我想您会发现,由于Silverlight无法附加到onload事件的相同原因,开启器将为null。由于端口号不同,它将被视为跨域脚本。我想您会发现,由于Silverlight无法附加到onload事件的相同原因,opener将为null。由于端口号不同,它将被视为跨域脚本。