4.8 网页交互
Silverlight应用程序并不是孤立存在的,通常宿主在ASP.NET网站中,由aspx或HTML网页承载。因此Silverlight与ASP.NET网站的交互,与HTML元素以及JavaScript函数的交互非常重要。
4.8.1 参数传递
在实际的应用程序中,经常需要从配置文件传递参数,在Silverlight应用中,传递参数可以通过插件对象的initParams属性指定,也可以从查询字符串获取。
initParams方式:
在ApplicationStartup 事件中通过StartupEventArgs 参数获取。
在程序其他位置以App.Current.Host.InitParams 属性获取。
² 示例:
下面代码指定了一个初始化参数,MapServiceUrl
< objectdata= "data:application/x-silverlight-2,"
type= "application/x-silverlight-2" wIDth= "100%"
height= "100%">
< param
name= "source" value= "ClIEntBin/MapExport.xap" />
< param
name= "initParams" value= "MapServiceUrl=<%=
ConfigurationManager.AppSettings[" MapServiceUrl "]%>"/>
< param
name= "onError" value= "onSilverlightError" />
< param
name= "minRuntimeVersion" value= "4.0.50826.0" />
< param
name= "autoUpgrade" value= "true" />
< /object>
初始化参数调用:
privatevoID Application_Startup( object sender, StartupEventArgs e)
{
string url = e.InitParams[ "MapServiceUrl"];
this.RootVisual
= new MainPage(url);
}
查询字符串方式:
即通过HTMLdocument.queryString直接获取HTML页面的查询参数。
4.8.2 HTML访问Silverlight
从HTML访问Silverlight,主要通过事件机制来实现。主要步骤如下:
1) 在HTML中声明HTML元素:
< inputID= "btnChangeBackground" value= "改变SL背景" type= "button" />
2) 在Silverlight中注册按钮事件:
HTMLElementbtnChangeBackground=HTMLPage.document.GetElementByID(
"btnChangeBackground");
btnChangeBackground.AttachEvent( "onclick",
new EventHandler<
HTMLEventArgs>(btnChangeBackground_Click));
3) 添加事件处理函数逻辑:
voID btnChangeBackground_Click( object sender, HTMLEventArgs e){
HTMLElement
button = sender as HTMLElement;
LayoutRoot.Background
= new SolIDcolorBrush(colors.Black);
}
4.8.3 Silverlight访问HTML
在Silverlight中,HTMLPage表示HTML页面,HTMLElement表示HTML元素,通过HTMLPage.document.GetElementByID获取要调用的HTML元素,然后执行相应的 *** 作。
示例:
HTMLElement txtTitle = HTMLPage.document.GetElementByID( "txtTitle");txtTitle.SetAttribute( "value",
"通过Silverlight设置的值");
txtTitle.SetAttribute( "FontSize",
12);
4.8.4 JavaScript访问Silverlight
从JavaScript函数访问Silverlight中的对象、方法,主要步骤如下:
1) 首先在HTML中为Silverlight插件对象指定名称:
< objectID= "SLObject" data= "data:application/x-silverlight-2,"
type= "application/x-silverlight-2" wIDth= "75%"
height= "100%">
2) 为HTML元素指定事件处理函数
< inputID= "btnTurnleft" value= "向左转动" type= "button"
onclick= "turnCircle(true)" />
3) 在事件处理函数中调用Silverlight对象:
functionturnCircle(isleft) {
var slobj = document.all( 'SLObject');
slobj.content.SLDataAccess.TurnImage(isleft);
}
4) 编写Silverlight中的函数(注意ScriptableMember标记了该函数可在脚本中调用):
[ScriptableMember]public
voID TurnImage( bool bleft)
{
„„
}
5) 在Silverlight代码中注册脚本函数:
HTMLPage.RegisterScriptableObject("SLDataAccess",
this);
4.8.5 Silverlight访问JavaScript
在Silverlight代码中也可以调用网页中的JavaScript函数,通过页面的Invoke方法,或者脚本对象的InvokeSelf方法均可。
页面调用方式:
tmlPage.Window.Invoke("showMessage",
"Silverlight中通过页面调用");
脚本对象方式:
ScriptObjectJsObj = (ScriptObject)HTMLPage.Window.GetProperty( "showMessage");
JsObj.InvokeSelf( "Silverlight中通过脚本对象调用");
JavaScript函数:
function showMessage(message) { alert(message); } 总结以上是内存溢出为你收集整理的Silverlight与html网页、javascript交互全部内容,希望文章能够帮你解决Silverlight与html网页、javascript交互所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)