更新:另一个标题可能是:如何从我的silverlight 2.0应用程序调用javascript.
这是一个关于Silverlight大师的快速问题.
我有一个显示秒表倒计时的Silverlight应用程序.该应用程序托管在ASP.Net Web应用程序中,我想要它做的是当秒表击中零时,应用程序强制主机页面的服务器页面刷新.
这可能吗?
如果是这样,代码片段的任何可能性?
R4c*_*OOn 25
为什么不简单地留在Silverlight端并打电话
System.Windows.Browser.HtmlPage.Document.Submit();
Run Code Online (Sandbox Code Playgroud)
为我服务.整个页面重新加载,Silverlight控件重新启动.
Pat*_*ald 20
显然你可以使用Silverlight调用JS脚本
HtmlPage.Window.CreateInstance
Run Code Online (Sandbox Code Playgroud)
要么
HtmlPage.Window.Invoke
Run Code Online (Sandbox Code Playgroud)
刷新页面的JavaScript 是
location.reload(true)
Run Code Online (Sandbox Code Playgroud)
我不是Silverlight或JavaScript专家,因此不确定它是否适用于所有浏览器,甚至根本不适用.
编辑:
斯科特用他的最终解决方案发表了对这个答案的评论.
他需要在名为reload()的ASP.Net页面上创建一个JavaScript客户端函数,该函数执行location.reload(true).然后从他的C#代码重新加载是一件简单的事情:
HtmlPage.Window.Invoke("reload");
Run Code Online (Sandbox Code Playgroud)
正如@ R4cOON建议的那样,你也可以使用:
System.Windows.Browser.HtmlPage.Document.Submit();
Run Code Online (Sandbox Code Playgroud)
只是快速说明为什么HtmlPage.Window.Invoke("location.reload(true);");不起作用:从我的快速测试看来,Silverlight实现Invoke的方式是在指定的JavaScript对象上查找具有给定名称的属性并调用它.所以这段代码会说,"在窗口对象上找到一个名为'location.reload(true);'的属性 并用零参数调用它." 相反,有一种GetProperty方法可以让你获得窗口的location属性并reload使用参数调用它true.最终代码如下所示:
((ScriptObject)HtmlPage.Window.GetProperty("location")).Invoke("reload", true);
| 归档时间: |
|
| 查看次数: |
23078 次 |
| 最近记录: |