2009-10-07 42 views
1

我有一个包含Silverlight控件的Web应用程序。当访问包含silverlight控件的特定页面时,执行javascript,并且如果此脚本执行得太早,则脚本会在IE中崩溃javascript引擎,即使try/catch也不能处理该错误。尝试访问Silverlight内容时Javascript崩溃了

简单的JavaScript

silverlightHtmlElement.Content.SilverlightApplication.SilverlightMethod(); 

如果Silverlight控件元素尚未完全加载脚本崩溃,而不仅仅是剧本,没有进一步的JavaScript是页面上的所有执行。

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

问题是我以后不能在页面上执行脚本。 之前有人看过这个吗?

回答

0

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

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

你需要确保不执行代码,直到控制被激活/加载,这PARAM添加到您的Silverlight对象标记:

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

然后在网页上定义一个JavaScript函数这样

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

那么你可以只是你调用方法添加到加载事件处理程序或查询应用程序变量为空,看看它准备好了。