默认情况下,生成的页面代码可能与下面的代码类似:复制代码代码如下:DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN ' ' http://www .w3。org/TR/XHTML 1/DTD/XHTML L1-过渡。DTD ' html xmlns=' http://www .w3。org/1999/XHTML ' head titlertransscript/title style type=' text/CSS ' html,body { height 3360 100%;飞越:汽车;} body { padd : 0;保证金: 0;} # SilverlightcontrolHost {高度: 100%;文本对齐:居中;}/style脚本类型=' text/JavaScript ' src=' http : Silverlight。js '/script脚本类型=' text/JavaScript '函数onSilverlightError(sender,args){ var appSource=' ';如果(发送方!=空发送方!=0) { appSource=sender.getHost().来源;} var errorType=args .错误类型变量错误代码=参数.错误代码;if(错误类型==' ImageError ' | |错误类型==' MediaError '){ return;} var errMsg=' Silverlight应用程序' appSource '中未处理的错误 n ';errMsg=' code : ' iErrorCode ' n ';errMsg=' category : '错误类型' n ';errMsg='Message: '参数。错误消息 n ';if(错误类型=='解析器错误'){ errMsg=' File : '参数。Xamlfile ' nerrMsg='第:行'参数。行号' n ';errMsg=' position : '参数。charposition ' n} else if(错误类型==' RuntimeError '){ if(args。行号!=0){ errMsg=' line : '参数。行号' n ';errMsg=' position : '参数。charposition ' n} errMsg='方法名: '参数。方法名' n ';}抛出新错误(errMsg);}/script/head body form id=' form 1 ' runat=' server ' style=' height :100% ' div id=' silverlightControlHost '对象数据=' data : application/x-Silverlight-2 ',类型=' application/x-Silverlight-2 '宽度=' 100% '高度=' 100% ' param name=' source ' value=' client bin/example。xap '/param name=' onError ' value=' onsilverlightrror ' LinkID=149156v=4。0 .50401 .0 ' style=' text-decoration : none ' img src=' http :http://go。微软。com/fwlink/?LinkId=161376 ' alt=' Get Microsoft Silverlight ' style=' border-style : none '/a/对象框架id=' slExample ' style='可见性:隐藏;高度:0像素宽度:0 px边框:0 px '/iframe/div/form/body/html我们可以给目标对象传递不同的参数,如客户端包的加载地址,onLoad或载入错误事件句柄,背景色,最小版本号支持等等,完整的参数信息读者可以参考Silverlight 3中参数参数列表汇总对象。对象中一般会包含一段a标记,是用来显示当客户端浏览器未安装开发插件时要显示的内容的,我们可以自定义其中的内容,如:复制代码代码如下:对象数据=' data :应用程序/x-Silverlight-2 ',类型='application/x-silverlight-2 '宽度='100% '高度='100% '参数名='source '值='ClientBin/example.xap'/参数名=' onError '值='onSilverlightError' /参数名='背景'值='白色'/参数名='minRuntimeVersion '值='4.0.50401当客户端浏览器未安装开发插件时,程序会在相应的区域显示一张带有热区的图片,热区指向的位置是微软提供的开发安装地址。理论上,你可以指定任何的自定义代码来显示非微光的效果,但是开发默认没有提供低版本开发情况下要显示的效果,也就是lowSilverlight的情况。
Silverlight可以自动实现向前兼容,即在较低版本编译的Silverlight包可以在较高版本运行,相反,在较高版本编译的Silverlight包不能在较低版本运行。此时,Silverlight插件会显示默认图片,通知用户升级插件,并弹出提示框,如下图:。
个人觉得这种用户体验不是很好。试想一下,如果当前页面有多个Silverlight插件,难道不想弹出多个提示框吗?那么如何解决这个问题呢?事实上,我们可以通过javascript脚本动态添加Silverlight,此外还可以直接向页面添加对象标签来呈现Silverlight。Silverlight.js脚本为我们提供了一系列可用的方法。详情请参考msdnhttp://mdn.microsoft.com/zh-cn/library/cc838126(v=vs . 95)。安装了aspx #以及如何通过脚本将Silverlight添加到页面。3358 msdn.microsoft.com/zh-cn/library/cc265155。aspxmdn给出了一个非常详细的例子来告诉我们如何使用这些脚本方法。需要注意的一点是,在使用Silverlight.js文件时,必须与当前的Silverlight版本保持一致。否则,可能会出现脚本错误。相应的Silverlight.js文件可以从微软的网站上下载,你会发现其实有很多可用的版本,包括那些支持调试的版本。使用createObject方法的参数需要注意几个问题:1。参数是按顺序指定的,如果有不需要传递的参数,可以改用null。2.必须指定父元素参数,即对象标记的父元素。元素的id可以作为对象直接传入,但在Firefox中不支持。此时,可以使用document . getelementbyid(' element id ')语句来代替此参数。3.param列表通过数组传递,参数名与对象标签中使用的名称一致。4.如果事件列表中没有对应的页面脚本,则发送空值,否则将报告脚本错误。5.如果不需要,可以省略最后一个参数context,并且不需要传递null或null值。您应该注意到,在使用createobject方法时,我们可以顺便为Silverlight指定一个非Silverlight效果,这是由param列表中的altHtml参数指定的。在实践中,我们还可以在使用对象标签直接在页面上呈现Silverlight时,使用alt属性指定非Silverlight效果,这与直接将html代码插入到object标签中是一样的。使用createObject方法,我们可以完全自定义lowSilverlight效果。下面是一个例子:复制的代码如下: div id=' div Silverlight content '脚本类型=' text/JavaScript ' if(Silverlight . is installed(' 4 . 0 . 50303 . 0 ')。{ Silverlight . createobject(' client bin/silverlightapplication 1 . xap ',document . getelementbyid(' divSilverlightContent ')),null,{ width: '532px ',height: '380px ',background: 'white ',version:'4.0.50303.0 ',windowless:'true' },null,' param1=value1,param 2=value 2 ');} else { document . write(' img src=' http : images/NonSilverlight . jpg ' style=' border-style : none ' usemap=' # SLMap3D _ NonSilverlight '/' map name=' NonSilverlight ' id=' NonSilverlight ' ' ' area shape=' RECT ' coords=' 154,87,362,183 ' title=' Get Microsoft Silverlight ' href=' http://www . Microsoft.com/Silverlight}/script iframe style=' visibility :隐藏;高度: 0;宽度: 0;Border: 0px'/iframe /div使用Silverlight.isInstalled()方法确定客户端浏览器中是否安装了指定版本的Silverlight插件。如果已经安装,请使用Silverlight.createObject方法创建Silverlight对象,否则输出自定义内容。这里还有一篇我个人觉得很有用的文章。跟大家分享一下吧!http://www . itstrike.cn/Question/Use-JavaScript-create-Silverlight-Object-createObject