Silverlightのhtmlpage.popupwindow()を使用してポップアップが閉じている場合の通知
-
02-10-2019 - |
質問
SilverlightアプリケーションからHTMLページをポップアップしています HtmlPage.PopupWindow()
方法。ポップアップウィンドウがシルバーライト内から閉じられているときのイベントを処理しようとしています。これが私がこれをやろうとしている方法です:
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を失敗させると考えていました。
解決
あなたは正しいです、ポート番号のバリエーションは、シルバーライトがポップアップウィンドウのイベントやコンテンツにアクセスするのを防ぐのに十分です。
他のヒント
イベント名に非常に小さなバグがあります:)「onunload」によって「onunload」を変更し、再試行してください
あなたの onUnload
イベントは、子ウィンドウで行われたアクションを検出するために、親/オープナーウィンドウではなく、ポップアップウィンドウで定義する必要があります。ポップアップでは、そのウィンドウ内のアクションを追跡し、ステータスの更新のために親/オープナーに電話を送信します。このコールを使用すると、親/オープナーからチャイルドウィンドウのデータを読み取れないため、そのウィンドウに必要な値を渡します。
ページがターゲットページのiframeである場合、親を使用します。のように parent.functionname(data);
. 。ページがターゲットページの別のウィンドウである場合、オープナーを使用します。のように opener.functionname(data);
.