Silverlight Object 标签的结构

接上一篇《呈现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.提供一个易用的可定制的安装升级体验。
这篇文章会解释上述标准在模板中如何体现。
[coolcode lang=”xml”]
Get Microsoft Silverlight

[/coolcode]
示例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标签进行实例化。

仅基于静态的HTML
脱离对Silverlight.js模型中的js依赖:
*一些虚拟主机不允许用户在网页中加入JavaScript。
*在一个网页中加入一个应用程序需要作者同时连接应用程序与Silverlight.js文件。
*不开启Silverlight的浏览器不能够访问Silverlight内容。
你需要安装控件以查看内容。
Install Control

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

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

你需要安装控件以查看内容。
Install Control


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

Get Microsoft Silverlight

将呈现如下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位浏览器。
这个系统会跟随由错误造成的问题而升级。这个系统的目的是,避免用户陷入安装的死循环。这样做的原因是将检测环境的责任由网站作者转移到微软。
其它的模板元素
data=”data:…,”
有两个object标签模板元素,他们的作用不是太容易理解。object标签的data属性与iframe标签。
Silverlight object标签增加data属性是在Silverlight 1.0发布不久。如果我们增加object标签到一个网页,而没有在object标签中加入一个data属性,浏览器就会忽略包含object标签的html文件。我会用这个例子说明它:
test1.html
————————————————-





————————————————-
当被浏览器运行时,网页会呈现这样的效果:
test1.html
————————————————-


(function () { var c = document.body.className; c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); document.body.className = c; })();