2011-08-05 42 views
1

我有一個頁面可以在單擊按鈕時加載另一個窗口。加載的頁面上有Silverlight控件,因此在接收JavaScript調用之前需要一段時間才能加載並準備好。當Javascript準備就緒時從Javascript調用Silverlight方法

我需要做的是在silverlight插件加載完成後立即調用silverlight對象的特定方法,並準備好與我進行交互。

現在,如果彈出的頁面已經被打開,則代碼將是這樣的:

var slWin = window.open('PopupPage.html', 'WindowName'); 
var elem = slWin.document.getElementById('slControl'); 
elem.Content.SlObject.MethodA(); 

時已經被打開窗戶,因爲控制已加載並準備這工作。我需要修改此代碼以處理elem需要一些時間準備的情況。

我試圖使用jQuery的readyload方法來處理程序添加到相應的事件,但沒有特別的欠缺。以下是完整的代碼片段:

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解決方案。

回答