尝试访问silverlight内容时Javascript崩溃

时间:2009-10-07 15:38:06

标签: javascript silverlight crash

我有一个包含silverlight控件的Web应用程序。当访问包含silverlight控件的特定页面时,将执行javascript,如果此脚本执行得太早,脚本会崩溃IE中的javascript引擎,甚至try / catch都无法处理错误。

简单的javascript

silverlightHtmlElement.Content.SilverlightApplication.SilverlightMethod();

如果silverlight控制元素尚未完全加载,则脚本崩溃,而不仅仅是脚本,根本不会在页面上执行更多的javascript。

一个简单的“if (silverlightHtmlElement.Content.SilverlightApplication)”来检查它的可访问性是否足以导致崩溃。

问题是我以后无法在页面上执行脚本。 其他人以前见过这个吗?

2 个答案:

答案 0 :(得分:1)

您需要确保在控件处于活动/加载状态之前不执行代码,将此参数添加到silverlight对象标记:

<param name="onLoad" value="pluginLoaded" />

然后像这样在页面上定义一个javascript函数

var app= null;
function pluginLoaded(sender, args) {
    app= sender.getHost();
}

然后你可以将你对该方法的调用添加到已加载的事件处理程序中,或者将app变量查询为null以查看它是否已准备就绪。

答案 1 :(得分:0)

您可以编写一些Silverlight代码,在完成初始化后执行javascript函数。这样,您的silverlight应用程序可以在加载完成后通知网页。

HtmlPage.Window.Invoke("myJsFunction", null);