我有一个包含silverlight控件的Web应用程序。当访问包含silverlight控件的特定页面时,将执行javascript,如果此脚本执行得太早,脚本会崩溃IE中的javascript引擎,甚至try / catch都无法处理错误。
简单的javascript
silverlightHtmlElement.Content.SilverlightApplication.SilverlightMethod();
如果silverlight控制元素尚未完全加载,则脚本崩溃,而不仅仅是脚本,根本不会在页面上执行更多的javascript。
一个简单的“if (silverlightHtmlElement.Content.SilverlightApplication)
”来检查它的可访问性是否足以导致崩溃。
问题是我以后无法在页面上执行脚本。 其他人以前见过这个吗?
答案 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);