Silverlight可以用作网站的应用开发。如果你希望Silverlight程序更像一个网站,并具有更强的扩展性,也许我们需要整合HTML页面。接下来的内容,将基于Silverlight 1.0做一些尝试,希望对您有所帮助。

先看演示

很酷吧。:D

原理。看图:

Silverlight原理结构

Silverlight程序是以控件的形式嵌入到HTML页面中的,这里是把将要整合的HTML页面利用iframe置于Silverlight控件之上,而不影响Silverlight控件的正常工作。

要点:

1.编辑按钮的xaml,定义MouseLeftButtonDown,使按下鼠标左键时,触发相应函数。

2.在该页面的js文件中,关联按钮。

  1. function On_MouseLeftButtonDown(sender,args){
  2. document.getElementById('iframe').style.visibility = "visible";
  3. }
  4. //开启HTML页面,将名为iframe的隐藏层的visibility属性改为visible显示
  5. function Off_MouseLeftButtonDown(sender,args){
  6. document.getElementById('iframe').style.visibility = "hidden";
  7. }
  8. //关闭HTML页面,将名为iframe的隐藏层的visibility属性改为hidden隐藏

3.该项目的html文件。

  1. <div id="iframe" style="position:absolute; width:640px; height:450px; z-index:1; left: 10px; top: 45px;visibility:hidden"><iframe scrolling="no" style="position:fixed; width:640px; height:450px;" src="http://www.mdong.org/qdjw" /> </div>
  2. //将iframe嵌入一个div层,并通过调整z-index值与visibility属性将该层置于Silverlight控件层上方并隐藏,以不影响Silverlight程序正常工作。
  3. //调整DIV层的位置大小。

源文件下载

OVER。

上述思路有妥协的嫌疑:D,毕竟所有的功能都能由Silverlight自身实现是最完美的。
但有些情况下,仍不失为一种高效的解决方案。

打到资本主义的走狗 大字报

打到资本主义的走狗 大字报

当前世界革命形势一片大好。蓝典也是。

而当前langmuir版主在《BS 说奥运会开幕式不好的人》的反动回复言论,却是以革命的名义背叛革命。

langmuir版主身为中国人,竟然起了一个西洋名字。在人们群众中起了极坏的作用,流毒又广又深。可以断定,langmuir版主至少现在已经在思想上堕落成了资本主义的叛徒!现在把他拿出来,用马克思主义的立场、观点、方法分析批判,肃清其流毒,变毒草为肥料,是很有必要,也是很有好处的。

历代的反动派都是敌视劳动人民的。表现在langmuir版主的回复里,就是“可悲论”,这是从根本上与劳动人民相对立。用剥削阶级的标准去“贬低”劳动,嘲弄无产阶级。

要谨记伟大领袖毛主席的训导:“小心敌人的糖衣炮弹”!langmuir版主诡辩“提出某些问题的初衷,不是批判什么,攻击什么,以上升到一个对立的层面上。而是期待事件的呈现,更为完美”。这是利用劳动人民的善良掩盖其险恶用心的罪恶阴谋,是反动派惯用的伎俩。但这骗人的谎言终究骗不了人,搞阴谋诡计一定会遭到可耻的下场。

langmuir版主胡说“要独立思考,要权利有愿望,说出自己的心声”。无数事实证明:只有实践出思考,斗争才有权利。这是妄图颠覆社会主义的可耻行径,是绝对不可能做到的。langmuir你听着,螳臂挡不住车轮,蚍蜉撼不了大树。你这是白日作梦!

人类历史上空前未有的无产阶级革命浪潮,汹涌澎湃,妄图阻挡这个潮流的小丑们,他们是难逃灭顶之灾的。不论他们打着什么旗号,不管他们有多高的职位,多老的资格,他们实际上是代表被打倒了的剥削阶级的利益。全国人民在八九反革命事件中消灭了一部分黑恶势力,接下来,象langmuir版主一样的资本主义走狗,将遭到彻底摧毁。

langmuir版主如此狂热地吹捧“忠言逆耳”,说明他是孔老二的忠实信徒。完全违背认识依赖于实践这一客观规律。与“可悲论”的反动目的是一致的。

langmuir版主罪大恶极。胆敢出口狂言——“不应该是某一个政权下的顺民奴性”。这是对无产阶级的挑衅,是对广大劳动人民的污蔑,是不符合阶级斗争事实的。他们宣扬这种谬论,是为了掩盖阶级矛盾,抹杀阶级斗争,反对劳动人民起来造反动统治阶级的反。

一切革命的知识分子,是战斗的时候了!让我们团结起来,高举社会主义思想的伟大红旗,团结在党中央和毛主席的周围,打破一切阴谋诡计,坚决、彻底、干净、全部地消灭一切牛鬼蛇神反革命分子,把社会主义革命进行到底。

为了让广大人民群众认识到资本主义走狗langmuir的险恶用心,下面将反动回复公布于众,把批判运动深入、普及、持久地进行下去。
我觉得有的时候很可悲。

提出某些问题的初衷,不是批判什么,攻击什么,以上升到一个对立的层面上。
而是期待事件的呈现,更为完美。

我想每一个能够独立思考的人,都有权利有愿望,说出自己的心声。
在这个原则下,上面的言行,为后来的同学树立了榜样。

我不知道我们是否应该无条件的支持或反对某一件事。
我只知道,八九事件中逝去的孤魂,尤抱深冤。
一个民族,不容忘却的是精神的烙印。
而不应该是某一个政权下的顺民奴性。

忠言逆耳。如果这也是古训。

(斗争导火索 原贴1 原贴2

为防止国外垃圾信息,已开启防SPAM插件。请在留言回复中,计算一道简单的数学题。谢谢。

算术题卸载,开启了验证码插件,最近机器人SPAM太厉害。

验证码根本防不住啊。还是继续算术题吧。

算术题也行不通了..测试SK插件ING。

早上在蓝色理想的更新推荐里看到了这篇文章。总感觉有些不舒服的地方,随便说说。

  1. 浏览器的出现
  2. 互联网的出现是人类信息交流方式的一次划时代的革命,在这场革命中有两个技术对互联网的发展起到了决定性的作用:一个技术带来的人类信息交换方式的改变,人们普遍的使用电子邮件时信息交流方式;另一个技术则是由伯纳斯-李和安德里森带来的网络使用方式的改变,人们普遍的使用万维网和网络浏览器。
  3.  
  4. 网络浏览器的出现,不仅使超文本文件格式的优点得到了充分的发挥,而且也使对互联网用户的技术要求降到了最低点。不用任何电脑方面的知识,不用经过任何训练,只要用一个小小的鼠标,就可以操作。正是浏览器的使用,才使得每个人都可以享受到上网的乐趣。
  5.  
  6. 浏览器是桌面系统的掘墓者
  7. 从浏览器诞生之日起,就成为了互联网扩张势力的神兵利器。Google以浏览器为自己实力的施展平台,为用户提供着具有丰富想象力的,具有良好用户体验的一系列产品;在线文件处理系统、在线日程安排等日益威胁着以微软为代表的传统的桌面文字处理软件系统。
  8.  
  9. 在传统的桌面软件时代,用户必须在自己的电脑上安装不同的软件来获的不同的需要,虽然很多时候很多软件都很少用,我们必须要安装,必须要给这些软件留出很多的储存空间;而在互联网时代,我们可以把软件储存在一台远方的服务器上,当我们需要的时候,就可以从该服务器上直接调取就可以了,我们不再需要把他安装在本机了。我们都可以把应用软件的端口都整合在浏览器的平台上。

诚然浏览器的诞生,促进了互联网的发展。而互联网的发展,推动力确不仅仅是浏览器。深层原因是人对互联网服务的需求。
浏览器只是一个实现需要的工具,而且又受制于其载体——系统平台。
浏览器真的是桌面系统的掘墓者么?
我认为,浏览器与系统平台是一种寄生关系。
Mosaic起于Unix,由于在Mac与Windows平台的推广而普及。
Netscape风光无限,但为什么会败在IE手下?
与时下Firefox、Opera的功能强大、高效相比,IE甘拜下风。
但是为什么后者的市场占有率仍然高达70%以上,无数的网站前台人员将对其的兼容性测试置于首位?
原因归为一点,微软主导了系统平台从而主导了浏览器市场。

看起来Google的在线服务非常强大,甚至有超过微软桌面平台的势头。
但是,请清醒一下。
你不担心数据安全性么?
你会将重要的公司数据档案交给Google编辑管理么?
你有应急措施,在Google服务器突然出现故障的一天,保证业务的正常运转么?
显然,答案只有一个——在本地存有备份,并能够在本地平台编辑管理。
因此建议将类似Google提供的一些在线服务做为第二选择。重要数据仍应由桌面平台处理,比较重要或者可有可无的服务酌情在存有本地备份的情况下转移到网站的在线服务。

  1. 浏览器时代的用户体验
  2. 因为浏览器的出现,使得使用互联网的技术门槛已经降得很低。不用任何电脑方面的知识,不用经过任何训练,一般的普通老百姓就可以操作。所以使得浏览器时代的用户体验设计变得更加复杂和多样化。不同层次的用户对于浏览器着不同的心理和生理上的感受,所以浏览器的个性化设计就是用户体验的一个重要方向,我们需要为不同的用户设计出面向不同的需求的浏览器。另一个方面是浏览器作为一个各种Wed服务接口的平台,其平台设计的易用性是很重要的一部分,毕竟对于用户来说浏览器只是一个中转站,浏览器本身并不提供信息内容,所以对于浏览器的设计来说,怎样设计好其跳转、怎样设计好众多信息接口的布局和信息构建就是比较重要的内容了。

当前廉价的硬件使得人们更有愿望来利用本地客户端的强大计算能力实现需求,对浏览器的需求将大大降低。
如有一个简单的调查,您是喜欢基于浏览器的游戏,还是喜欢由客户端执行的网络游戏。
事实是后者将占有绝对优势。
带宽的持续增长使得基于Internet网络交互更为丰富,人们对互联互通的需求持续增长,简单的B/S结构已经不能适应。这是一个趋势。
观察一下IE最近几个版本的公布时间,IE5(2000年) IE6 (2001年) IE7(2005年) IE8(推测2009年)。
可以发现,微软正在逐渐放缓对浏览器的研发,而将网络实现的注意力转移到桌面平台之上。
当前的Silverlight技术也只是一个由浏览器到桌面平台的过渡产品。
在平台发展的带动下,浏览器所实现的功能将会由桌面平台瓜分。
浏览器将和RSS合作主要用于静态信息展示,绝大多数动态的计算任务将交给“网络服务+胖客户端”。

一家之言,给大家增加一些饭后的谈资。^^

下面提供一个强大的桌面搜索引擎,基于WPF。
下载点击这里。
WPF_search

接上一篇《呈现Silverlight:HTML vs. Script》 E文
水平有限,出现不准确的地方请指正。谢谢。

Silverlight 2 的安装模型使用Silverlight object标签模板。在上一篇文章《呈现Silverlight:HTML vs. Script 》提到过,这个模板的设计遵循的5条标准:

1.兼容Silverlight1.0。
2.仅基于静态的HTML。
3.为客户端提供合适的安装文件(Mac,Windows,其它)。
4.为不能够使用Silverlight的用户提供可行的反馈。
5.提供一个易用的可定制的安装升级体验。

这篇文章会解释上述标准在模板中如何体现。

  1. <object data="data:application/x-silverlight," type="application/x-silverlight-2-b2" width="500" height="500">
  2.     <param name="source" value="MyApplication.xap"/>
  3.     <param name="onerror" value="myOnError" />
  4.     <param name="background" value="black" />
  5.    
  6.     <a href="http://go.microsoft.com/fwlink/?LinkID=115261" style="text-decoration: none;">
  7.          <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" 
  8.               style="border-style: none"/>
  9.     </a>
  10. </object>
  11. <iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>

示例1:Silverlight 2 Beta 2 object标签模板(局部)

兼容Silverlight 1.0

Silverlight 1.0安装/实例化模型建立在一个名为Silverlight.js的JavaScript帮助文件之上。这个文件拥有一系列参数,通过函数与参数的使用将Silverlight控件嵌入网页的DIV标签内。Silverlight 2控件在IE中使用object标签嵌入DIV标签,而在Firefox与Safari中使用embed标签。

在未定义classid的object标签中使用MIME类型,一个网页即可在支持Silverlight的浏览器中正确地实例化Silverlight控件。当浏览器的classid属性不一致甚至不兼容的情况下,MIME类型定义的类型属性都能以相同的方式被解释。因此,在object标签中使用类型属性,能够满足Silverlight 1.0与Silverlight 2控件通过一个单独的HTML标签进行实例化。

  1. <object ... type="application/x-silverlight-2-b2" ...>

仅基于静态的HTML

脱离对Silverlight.js模型中的js依赖:

*一些虚拟主机不允许用户在网页中加入JavaScript。
*在一个网页中加入一个应用程序需要作者同时连接应用程序与Silverlight.js文件。
*不开启Silverlight的浏览器不能够访问Silverlight内容。

  1. <object type="fake/mimetype" width="500" height="500">
  2.     <param name="foo" value="bar"/>
  3.    
  4.     <table>
  5.         <tr>
  6.             <td>
  7.                你需要安装控件以查看内容。
  8.             </td>
  9.             <td>
  10.                 <a href="http://www.tempuri.org/install/control.exe">
  11.                     <img src="http://www.tempuri.org/install/installControl.png" alt="Install Control"/>
  12.                 </a>
  13.             </td>
  14.         </tr>
  15.     </table>
  16. </object>

如果在浏览器有一个控件映射到“fake/mimetype”MIME类型:

  1. <object type="fake/mimetype" width="500" height="500">
  2.     <param name="foo" value="bar"/>
  3. </object>

运行时浏览器中object标签与param标签将被忽略:

  1. <table>
  2.     <tr>
  3.         <td>
  4.             你需要安装控件以查看内容。
  5.         </td>
  6.         <td>
  7.             <a href="http://www.tempuri.org/install/control.exe">
  8.                 <img src="http://www.tempuri.org/install/installControl.png" alt="Install Control"/>
  9.             </a>
  10.         </td>
  11.     </tr>
  12. </table>

当Silverlight不可用时,Silverlight object标签模板会使用下面的应急机制显示安装提示。如果已经安装Silverlight的用户访问一个Silverilght页面时,Silverlight应用程序会正常显示。如果用户没有安装Silverlight时,浏览器会忽视Silverlight标签并显示嵌入的HTML。默认情况下,用于Silverlight 2 Beta 2的HTML:

  1. <a href="http://go.microsoft.com/fwlink/?LinkID=115261" style="text-decoration: none;">
  2.      <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" 
  3.           style="border-style: none"/>
  4. </a>

将呈现如下UI元素:
Silverlight2安装画面

为客户端提供合适的安装文件
如果你查看用于HTML安装的默认Silverlight object标签模板,你会注意到一个a标签链接到Silverlight 2 Beta 的地址:http://go.microsoft.com/fwlink/?LinkID=115261。在Silverlight.js文件中,为各个操作系统提供了唯一的安装地址:适用于Windows的.exe、适用于Mac的.dmg,以及一个未知平台的链接地址。在Silverlight 2 中微软将这个侦测功能转移到了服务器端。当用户运行到上述的安装程序地址,服务器会为这个用户侦测适用的安装程序。如果可能,安装程序会打开安装程序而无需离开当前页面。如果浏览器不支持Silverilght,如64位的IE,这时会跳转到一个微软的网页,告诉他们关于安装Silerlight控件的平台要求。

服务器端的工具是很有用的。第一,一个网站只需要为控件提供一个单一的下载地址。第二,网站作者不必担心用户的操作环境,如不支持的平台。第三,如果先前一个不支持Silverlight的平台得到支持,这时使用这个单一地址的网站会自动的为那个平台提供支持。

提供给用户可行的反馈

这个部分包含了先前的一些章节。如果侦测到部分用户系统中Silverlight不能正常工作。有3个可能的原因:

*不支持的操作系统。
*不支持的浏览器。
*不支持的64位浏览器。

在确定向特定的客户端提供安装程序之前,系统会检查上述条件。如果碰到其中的一项会发送给用户一个微软的网页告知侦测到的问题。在有些情况下,系统会告诉用户他们的操作系统不被支持。在另外一些情况下,用户会被告知他们应该更换一个被支持的浏览器。在使用64位浏览器时,用户会被告知使用32位浏览器替代64位浏览器。

这个系统会跟随由错误造成的问题而升级。这个系统的目的是,避免用户陷入安装的死循环。这样做的原因是将检测环境的责任由网站作者转移到微软。

其它的模板元素

  1. data="data:...,"

有两个object标签模板元素,他们的作用不是太容易理解。object标签的data属性与iframe标签。

Silverlight object标签增加data属性是在Silverlight 1.0发布不久。如果我们增加object标签到一个网页,而没有在object标签中加入一个data属性,浏览器就会忽略包含object标签的html文件。我会用这个例子说明它:

  1. test1.html
  2. -------------------------------------------------
  3. <html>
  4.    <body>
  5.        <object type="fake/MIMEtype">
  6.        </object>
  7.    </body>
  8. </html>
  9. -------------------------------------------------
  10.  
  11. 当被浏览器运行时,网页会呈现这样的效果:
  12.  
  13. test1.html
  14. -------------------------------------------------
  15. <html>
  16.    <body>
  17.        <object type="fake/MIMEtype" data='<html><body><object type="fake/MIMEtype"></object></body></html>'>
  18.        </object>
  19.    </body>
  20. </html>
  21. -------------------------------------------------

这个行为明显的增加了内存占用,对于复杂的网页尤为突出。更糟的是,网页的HTML不会从内存中被释放。取而代之的是,浏览器会将其当成一个额外的请求退回Web服务器,重复刷新这个页面。如此将增加页面的响应时间并增加了服务器下载页面的时间。

为了缓和这个问题,我们需要一个跨平台的方法用于填充object标签的data属性,而无需花费web开发人员过多的时间精力。经过许多尝试发现object标签允许data从外部引用(从一个文件)或内嵌(从HTML)。基于这样的想法,我们创建了一个内嵌的空数据流加入data属性,而不与任何控件相结合。结果你会看到:

  1. data="data:application/x-silverlight,"

Silverlight的MIME类型防止了控件被错误的解释。逗号后的空字符串最小化的减少流的体积。增加这个属性到object标签防止了额外的内存使用与服务器点击数。

  1. <iframe>

iframe标签包括了一个浏览器的兼容缓存。这个缓存使Silverlight控件在Safari与其它浏览器的呈现保持一致。

延伸:
Silverlight 2应用程序的部署
蓝典Silverlight专版

大家知道在Flash中有一个引导层功能,可以辅助完成丰富的动画制作.
于是有人疑问Silverlight中是否有类似功能.
答案是否定的——Silverlight并不支持.
然而在WPF却有运动路径(motion path),效果类似于引导层.
Silverlight受限于浏览器,为了保持小巧的插件体积,如上述功能就被摒弃了.

接下来有一个解决方案,可以使Silverlight如WPF一样,支持运动路径(motion path).
请先下载这个WPF项目.
这个WPF程序的功能是将在Blend中编辑的动画,通过它将WPF动画转化为Silverlight可用.操作如下:
1.用Blend打开harness目录下的项目.
2.在画布中的空白区域绘制图形,目的是利用运动路径(注意取得图形元素的XAML).
3.F5运行WPF程序.调节相关设置Animation Name、Element to Animate、KeyFrame type、Frames per second等.
4.复制取得动画的Translate X,Translate Y值.
5.打开所要操作的Silverlight项目.将第一步取得在图形元素XAML载入.创建新的时间轴,粘贴替换上一步取得的Translate X,Translate Y值.

完毕.

上述方案会产生许多冗余的代码,但仍不失为一种好的尝试.

延伸阅读:
所用WPF的作者原文
蓝典Silverlight专版