概述:
SilverLight运行浏览器时,像Ajax一样可以在Html页面通过Javascript调用SilverLight程序内方法。
效果:
[ScriptableMember]
指示可由 JavaScript 调用方访问的特定属性、方法或事件。
为了调用SilverLight项目中的方法,我们必须指定该方法能否被Javascript调用
HtmlPage.RegisterScriptableObject 方法
注册托管对象以便用于通过 JavaScript 代码的可脚本化访问。
为了使浏览能够通过Javascript访问SilverLight程序,必须先声明该SilverLight程序能被Javascript调用。
Xaml代码:
</ Grid >
SilverLight CS代码:
{
public MainPage()
{
InitializeComponent();
// HtmlPage.RegisterScriptableObject 方法
// 注册托管对象以便用于通过 JavaScript 代码的可脚本化访问。
HtmlPage.RegisterScriptableObject( " Button " , this );
}
/// <summary>
/// 执行网络服务
/// [ScriptableMember]指示可由 JavaScript 调用方访问的特定属性、方法或事件。
/// </summary>
[ScriptableMember]
public void ExecuteWebService()
{
MessageBox.Show( " 我是SilverLight项目中的MessageBox " , " o(∩_∩)o 哈哈 " ,MessageBoxButton.OK);
}
}
好现在我们看看怎么在Html页面调用SilverLight 代码:
创建一个SilverLight插件,使Javascript可以调用插件里面注册的方法。
通常会使用这个对象标签方法 创造Silverlight插件
-->
< body style ="height: 100%;" >
< div id ="mySilverlightHost" style ="height: 100%;" >
< script type ="text/javascript" >
var host = document.getElementById( " mySilverlightHost " );
// 创建一个指定的对象并返回对它的引用。
Silverlight.createObjectEx({
// 设置创建对象的数据来源
source: " ClientBin/ReferencingFromScript.xap " ,
// 设置对象层次的父对象
parentElement: host,
// 设置唯一标识id
id: " mySilverlightControl " ,
// 设置属性
properties: {
height: " 100% " ,
width: " 100% " ,
version: " 2.0 "
},
events: {}
});
</ script >
</ div >
< input type ="button" onclick ="buttonClick();" value ="调用SilverLight方法" />
</ body >
写Javascript类来调用方法:
< title > Silverlight Project Test Page </ title >
< script type ="text/javascript" src ="Silverlight.js" ></ script >
< script type ="text/javascript" >
function buttonClick() {
// 获取SilverLight插件中 以创建的对象
var plugin = document.getElementById( " mySilverlightControl " );
// 执行SilverLight项目中已经注册的可被Javascript调用的方法
plugin.content.Button.ExecuteWebService();
}
</ script >
</ head >
大功告成!!!
作者:记忆逝去的青春
出处:http://www.cnblogs.com/lukun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过http://www.cnblogs.com/lukun/ 联系我,非常感谢。