silverlight 3变种脱机浏览
其实如果silverlight3及以下版本不能生成脱机浏览程序的话,我倒是想出一个有点滑稽的方法可以简单地实现脱机超简单的效果展示。
明白silverlight运行原理的人肯定也知道silverlight通过动态或静态ASP.NET或Html页面承载它可以实现在网页当中显示的范围位置等,就拿Html页面来说吧,发现页面代码中<body></body>区域有一个<object></object>,这个标识就是用来放置silverlight项目的地方,它是放在<form><div></div></form>里面。
然后看下<object></object>里面的代码,第一行是用来配置silverlight(算是一种object)的注册信息及大小,第二行: <param name="source" value="file:///D:/MocapView.xap"/> 你发现name="source" 就是指这个网页所要引用的silverlight源了,而第一个(name="source"后面的第一个)value就是源(xap)的位置了。OK,聪明的朋友明白了吧,xap格式的文件就是silverlight开发工具编译动态生成的压缩文件(详见Silverlight 2应用程序中XAP文件的生成、使用和执行 ),你把xap文件的后缀改成.rar就会发现里面有两个文件(一个是xaml一个是dll),所以问题就很明白了。
所以我们就这样实现一种滑稽的所谓的silverlight3脱机浏览(就称它为伪脱机浏览),下面给出了我的测试代码及部分介绍:
项目编译生成的xap文件名就叫MocapView.xap,放在D:盘下面。
在桌面或任何地方新建一个.txt文件将下列代码复制进去并保存:
2 <html xmlns="http://www.w3.org/1999/xhtml" >
3 <!-- saved from url=(0014)about:internet -->
4 <head>
5 </head>
6 <body>
7 <form id="form1" runat="server" style="height:100%">
8 <div id="silverlightControlHost">
9 <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
10 <param name="source" value="file:///D:/MocapView.xap"/>
11 <param name="onError" value="onSilverlightError" />
12 <param name="background" value="white" />
13 <param name="minRuntimeVersion" value="3.0.40818.0" />
14 <param name="autoUpgrade" value="true" />
15 <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration:none">
16 <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
17 </a>
18 </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
19 </form>
20 </body>
21 </html>
22
将文件名改成Html格式文件,就叫Test.html吧。
OK,只要路径正确就不会出什么问题,这样就实现了silverlight3的“脱机版 ”,会出现深奥的问题暂时还没有发现,如果有朋友发现的话不防说说。
效果如下:还是那个柴人动画:
此方法在没有安装.NET Framework 3.5的系统下正常运行。且在没有安装silverlight插件的浏览器里也能正常动作。