从JavaScript调用Silverlight是否仅在被HTML按钮调用时有效?
我试图让一个简单的JS代码块通过HTML桥调用我的Silverlight控件。我读过的十几个左右的示例中,所有的都是使用HTML按钮显示的,在单击时带有连接的JS函数,就像这样:从JavaScript调用Silverlight是否仅在被HTML按钮调用时有效?,javascript,asp.net,silverlight,Javascript,Asp.net,Silverlight,我试图让一个简单的JS代码块通过HTML桥调用我的Silverlight控件。我读过的十几个左右的示例中,所有的都是使用HTML按钮显示的,在单击时带有连接的JS函数,就像这样: <input id="Button1" type="button" value="Test Call To SL" onclick="return CallSilverlight()" /> function CallSilverlight() { var SLControl = documen
<input id="Button1" type="button" value="Test Call To SL" onclick="return CallSilverlight()" />
function CallSilverlight() {
var SLControl = document.getElementById("MySLControl");
SLControl.Content.Page.UpdateText("Hello from Javascript!");
}
函数CallSilverlight(){
var SLControl=document.getElementById(“MySLControl”);
SLControl.Content.Page.UpdateText(“来自Javascript的你好!”);
}
上述方法非常有效。调用JS函数“CallSilverlight”,并调用我使用的Silverlight方法。在我的场景中,我需要按下ASP.NET服务器控件按钮,进行一些处理,然后调用JS函数。很简单,在ASP.NET按钮单击事件的最后一个块中,我注册了JS函数:CallSilverlight(),它确实被调用了(断点工作)。但是,在调用Silverlight方法时,我总是从调试器中得到一条“未知异常”消息,就是这样
我认为回发导致了这个问题,因为这是HTML按钮和ASP.NET按钮之间的主要区别。使用ASP.NET按钮然后按我的方式调用JS有什么问题吗?如果没有问题,我可能会做得不正确吗?如果没有访问前端代码,我猜回发完成后浏览器不会运行Silverlight Javascript注册,因此不再注册控件。如果是部分回发,可能就是这样 你只需要确保它已注册
另一件会阻止Silverlight控件注册到Javascript桥的事情是它是否被css隐藏。在发布问题后不久再次发现了这一点-可以使用ASP.NET服务器控件(即按钮)。但是,客户端事件必须用于调用调用Silverlight脚本化方法的JS函数,而不是尝试在回发上注册JS。因此,按钮需要如下所示:
<asp:Button ID="Button1" runat="server" Text="Test Call To SL" OnClientClick="return CallSilverlight()" />
听起来很合理-在SL控件注册之前,您对在何处延迟调用JS函数有什么建议吗?我想我应该发送Javascript以注册回发的Silverlight-可能将其放入文本控件中。我认为这样会重新注册控件。和他一起玩会很有趣的。