[Silverlight探秘]利用Silverlight调用Javascript的方法
2007-06-20 13:57
726 查看
********************************************************************
* 版权声明
*
* 本文以Creative Commons的
发布,请严格遵循该授权协议。
* 本文首发于博客园, 此声明为本文章中不可或缺的一部分。
* 作者网名: 浪子
* 作者EMAIL:dayichen (at)163.com
* 作者BLOG: Http://Www.Cnblogs.Com/Walkingboy
*
********************************************************************
[Silverlight探秘]利用Javascript调用silverlight的方法
-Written by 浪子@cnblogs.com (07-06-20)
摘要:
在上文[Silverlight探秘]利用Javascript调用silverlight的方法中,我们探讨了,如何利用javascript来调用silverlight的托管方法。这个相对来说比较好办些,因为Silverlight毕竟兼容DOM的object方式调用,但是反过来就比较麻烦了,因为javascript设计者不可能那么早就想到为silverlight开个接口:)
本文环境:
Codename Orcas Beta1
Silverlight 1.1 Alpha
IE 6.0
思路:
即然没办法从Silverlight直接调用javascript对象,那我们只能从和它们都有关系的DOM的object调用上下手了。要实现互操作,首先Silverlight必须提供一个可供javascript操作的对象,也就是[Silverlight探秘]利用Javascript调用silverlight的方法中我们所提到[Scriptable]标签,但是单单这样子还是不够的。我们这里的场景是Silverlight只提供的函数定义,而javascript实例函数实现,然后在Silverlight里面调用。想想这个场景,跟我们以前的什么应用有点类似哦,没错就是委托(或者使用事件Event)。即然场景类似,我们就动手测试下,看是否行得通。
编写Silverlight的托管方法:
* 版权声明
*
* 本文以Creative Commons的
发布,请严格遵循该授权协议。
* 本文首发于博客园, 此声明为本文章中不可或缺的一部分。
* 作者网名: 浪子
* 作者EMAIL:dayichen (at)163.com
* 作者BLOG: Http://Www.Cnblogs.Com/Walkingboy
*
********************************************************************
[Silverlight探秘]利用Javascript调用silverlight的方法
-Written by 浪子@cnblogs.com (07-06-20)
摘要:
在上文[Silverlight探秘]利用Javascript调用silverlight的方法中,我们探讨了,如何利用javascript来调用silverlight的托管方法。这个相对来说比较好办些,因为Silverlight毕竟兼容DOM的object方式调用,但是反过来就比较麻烦了,因为javascript设计者不可能那么早就想到为silverlight开个接口:)
本文环境:
Codename Orcas Beta1
Silverlight 1.1 Alpha
IE 6.0
思路:
即然没办法从Silverlight直接调用javascript对象,那我们只能从和它们都有关系的DOM的object调用上下手了。要实现互操作,首先Silverlight必须提供一个可供javascript操作的对象,也就是[Silverlight探秘]利用Javascript调用silverlight的方法中我们所提到[Scriptable]标签,但是单单这样子还是不够的。我们这里的场景是Silverlight只提供的函数定义,而javascript实例函数实现,然后在Silverlight里面调用。想想这个场景,跟我们以前的什么应用有点类似哦,没错就是委托(或者使用事件Event)。即然场景类似,我们就动手测试下,看是否行得通。
编写Silverlight的托管方法:
[Scriptable] public partial class Page : Canvas { public Page() { //注册客户端实例 WebApplication.Current.RegisterScriptableObject("LangZi", this); } public void Page_Loaded(object o, EventArgs e) { // Required to initialize variables InitializeComponent(); //注册按钮事件
btnCallScript.MouseLeftButtonUp += new MouseEventHandler(btnCallScript_MouseLeftButtonUp); } void btnCallScript_MouseLeftButtonUp(object sender, MouseEventArgs e) { if (CallScript != null) { //CallScript(this, new MyEventArgs("called by server!")); CallScript(this, EventArgs.Empty); } } //注册客户端可访问的事件定义 [Scriptable] public event EventHandler CallScript; }
跟上文相比,这里只是把SayHello换成了Event而已,其他没有太大的变化
客户端注入方法到事件上:
function createSilverlight() { Sys.Silverlight.createObjectEx({ source: "Page.xaml", parentElement: document.getElementById("SilverlightControlHost"), id: "SilverlightControl", properties: { width: "100%", height: "100%", version: "0.95", enableHtmlAccess: true }, events: { onLoad: OnLoaded } }); } function OnLoaded(sender,args){ //debugger; sender.Content.LangZi.CallScript = OnCallScript; } function OnCallScript(sender, args){ //debugger; alert("Running!"); }
扩展思路:
相关文章推荐
- [Silverlight探秘]利用Javascript调用silverlight的方法
- 怎样在前端Javascript中调用C#方法:利用反射
- Silverlight与javascript互调用方法总结
- Silverlight 4 WebBrowser的使用及调用 WebBrowser 中的 javascript 方法
- 从 JavaScript 调用silverlight方法
- 利用WebView通过javascript调用android java方法
- 利用ScriptManager实现Javascript调用WebService中的方法
- 【转】利用ScriptManager实现Javascript调用WebService中的方法
- SilverLight浏览器交互之:SilverLight程序调用外部Html中的Javascript方法(附源码)
- 利用ScriptManager实现Javascript调用WebService中的方法
- 利用ScriptManager实现Javascript调用WebService中的方法
- SilverLight学习笔记--Silverligh之在SL中调用Javascript (四种调用方法+简单与复杂参数的传递)
- SilverLight浏览器交互之:Html页面通过Javascript调用SilverLight程序内方法(附源码)
- iOS JS 交互之利用系统JSContext实现 JS调用OC方法以及Objective-C调用JavaScript方法
- 利用js调用iframe中父页面/子页面中的JavaScript方法
- 在Silverlight1.1中定义与调用Javascript事件的方法
- 利用广播调用服务里面的方法
- javascript调用asp.net后置代码方法
- C#后台调用前台javascript的五种方法
- Javascript动态方法调用与参数修改的问题