当Javascript准备就绪时,从Javascript调用Silverlight方法

时间:2011-08-05 11:28:54

标签: javascript jquery onload

我有一个页面可以在按钮点击时加载另一个窗口。加载的页面上有silverlight控件,因此在接收javascript调用之前需要一些时间来加载并做好准备。

我需要做的是在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解决方案。

1 个答案:

答案 0 :(得分:0)

发生此错误是因为当您尝试访问Silverlight对象时未完全加载它。

尝试使用silverlight对象的“onload”事件来检测它何时可以使用。这里有MSDN文档的链接:

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

希望它有所帮助。 :)