ボタンをクリックすると別のウィンドウを読み込むページがあります。読み込まれたページには銀色のコントロールがあるので、JavaScriptコールを受信する前にロードして準備するまでに時間がかかります。準備ができたら、JavascriptのSilverlightメソッドを呼び出す
私がする必要があるのは、silverlightプラグインがロードされてすぐに私とやりとりする準備ができた後、特定のSilverlightオブジェクトメソッドを呼び出すことです。ポップアップページがすでに開かれた場合
さて、その後、コードはそのようになります:
var slWin = window.open('PopupPage.html', 'WindowName');
var elem = slWin.document.getElementById('slControl');
elem.Content.SlObject.MethodA();
これは、コントロールがすでにロードされたと準備ができているので、ウィンドウが既に開かれたときに動作します。 elem
が準備する時間が必要なときにこのコードを修正して状況を処理する必要があります。
jQueryのready
およびload
メソッドを使用して、対応するイベントにハンドラを追加しようとしましたが、特に不足はありませんでした。完全なスニペットは次のとおりです。
var slWin = window.open('', 'WindowName');
var elem = slWin.document.getElementById('slControl');
if (elem == null) {
slWin.location.href = 'PopupPage.aspx';
// this branch doesn't work
$(slWin).load(function() {
elem = slWin.document.getElementById('slControl');
elem.Content.SlObject.MethodA();
});
}
else {
// this branch works fine
elem.Content.SlObject.MethodA();
}
この問題を解決するにはどうすればよいですか?私はjQueryソリューションを気にしません。