2011-08-05 13 views
1

ボタンをクリックすると別のウィンドウを読み込むページがあります。読み込まれたページには銀色のコントロールがあるので、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ソリューションを気にしません。

答えて

0

このエラーは、Silverlightオブジェクトがアクセスしようとしたときに完全に読み込まれていないために発生しています。

silverlightオブジェクトの "onload"イベントを使用して、使用準備が完了したらそれを検出しようとします。ここでは、MSDNのドキュメントへのリンクを持っている:

http://msdn.microsoft.com/en-us/library/cc838107(v=vs.95).aspx

はそれがお役に立てば幸いです。 :)

関連する問題