你的分享就是我们的动力 ---﹥

Silverlight的JavaScript API

时间:2011-09-30 10:04来源:www.chengxuyuans.com 点击:

在某些情况下,Silverlight 的 JavaScript API 是必需的或者比托管 API 更适合。本主题论述这些 情况并提供一些链接,这些链接指向有关 Silverlight 中 JavaScript API 的更多信息。

先决条件

您应该阅读应用程序和编程模型并理解托管 API 和 JavaScript API 之间的基本差异。还应理解 HTML DOM 以及 Silverlight 编程模型和对象树如何与浏览器 DOM 相关;

编程模型注意事项

Silverlight 的 JavaScript API 是已在 Silverlight 的 1.0 版中提供的编程模型。它使用当前在 Silverlight 2 中提供的一小部分对象,外加少量特定于 JavaScript API 的对象。子集注意事项还将 影响可以在 XAML 中定义的对象。Silverlight XAML 分析器只为此子集在对象树中创建对象,因为该对 象树基于位于 JavaScript API 之下的固定本机代码实现创建。换言之,适用于 Silverlight 的 JavaScript API 的子集和限制注意事项远比为编写代码隐藏逻辑所选择的语言更具切实意义;您选择的 编程模型/API 将确定哪些对象可用于您的应用程序。

如果您已针对 Silverlight 1.0 进行了开发,则可能已对用于 Silverlight 的 JavaScript API 十 分熟悉。JavaScript API 与针对 HTML DOM 的编程十分相似,并且实际上是在浏览器的脚本引擎中执行 的,就像针对 DOM 的脚本一样,但 Silverlight 模型扩展到在 XAML 页作为 Silverlight 插件的内容 加载时创建的对象树中。这使您可以处理在 XAML 中定义的特定对象上的事件,在运行时获取或设置属性 值或执行对象方法,在运行时修改 XAML 创建的对象的结构等。

就结构而言,应通过打开通往 Silverlight 对象树的路径、包装脚本调用并在本机将它们传递到插件 对象,在 Silverlight 插件上启用 JavaScript API。在 Internet Explorer 中,这一包装通过 IDispatch::Invoke 调用实现;其他浏览器可根据其插件和脚本结构使用不同的包装范例。 

使用 JavaScript API 的情形

初始屏幕

初始屏幕是一个初始的内容区域,可在其他内容仍在加载时向用户显示。就设计和用途而言,初始屏 幕具有相对较低的用户界面和交互要求。初始屏幕主要用于以下方面:

展现吸引人的视觉效果。

向用户提供反馈,指示应用程序(或浏览器宿主)仍在按预期工作并且下载正在进行中。

提供有关下载进度的特定信息。

前两个功能常常在 XAML 中就可以完全实现,无需任何代码隐藏。提供下载进度要求相对较少的 API ,以便从执行下载的网络层获取信息。出于这些原因,最好通过使用 JavaScript API 并为 SplashScreenSource 加载 XAML 页(脚本代码隐藏支持这一加载),实现初始屏幕。JavaScript API 无 需激活 Silverlight CLR 和相关程序集即可加载初始屏幕,这将缩短启动时间。

Silverlight 1.0 时期的内容和维护

Silverlight 2 插件支持一个兼容模式,该兼容模式支持按 Silverlight 1.0 时间范围编写的应用 程序。特别是,该插件可以基于传递到 object 元素的 application 的 Silverlight 1.0 时期的字符串 和/或为初始化传递到 Silverlight.js 的版本“1.0”进行初始化。最初为 Silverlight 1.0 编写的站 点通常应继续可用于具有 Silverlight 2 插件的客户端。

说明:
如果您将 Silverlight.js 用于初始化,则应考虑更新在您的原始部署中使用的 Silverlight.js,因为可能存在对说明不同浏览器代理字符串的脚本逻辑进行的更新以及自 Silverlight 1.0 发布后发生的其他技术更改。

Silverlight 2 通过提供对对象树的 JavaScript 访问以及支持指定单个 XAML 页的 Source 值,继 续支持 JavaScript API。如果您具有某一现有的 Silverlight 1.0 时期的应用程序并且只是在添加几个 特定功能或增强功能,则您的商业和技术决策过程可能确定最好将新的功能纳入现有基本代码中并继续使 用 JavaScript API。

开发人员经验水平

如果您对于 JavaScript 具有全面、丰富的经验,则继续使用 JavaScript API 可能会最好地发挥您 的长处。但是,Silverlight 2 中提供的许多功能都要求托管 API 并且不可用于 JavaScript。

其他注意事项

如果您在更大 HTML 页中使用的 Silverlight 内容具有相对较少的要求,或者您广泛地使用 HTML DOM 以便在单页中集成许多不同的 HTML 内容区域以及其他插件或控件,则您的决策过程可能会确定 JavaScript API 提供具有最低开销的集成解决方案。

用于 JavaScript API 的文档

Silverlight 3 的文档的大部分内容都涉及托管 API。例如,如果您想要了解与动画有关的更多信息 ,则可以转至动画概述,它包含对这两种 API 大体相同的 XAML 示例。但该主题还包含托管代码示例并 且处理特定于托管代码的某些情况。您仍能够了解这些概念,与代码示例所采用的语言无关。

对于 JavaScript API,此文档集不包含针对可用于 JavaScript API 的所有对象、属性、方法、事件 和枚举的全套参考主题。这些参考主题提供用于 XAML 和 JavaScript 的语法、对象的成员列表以及将 XAML 与 JavaScript 一起用于代码隐藏(偶尔仅限 JavaScript)的示例代码。以下是 Silverlight 的 JavaScript API 参考的有用的入口点:

Silverlight 的 JavaScript API 参考

对象参考

方法引用

属性参考

事件参考

枚举参考

用于 Silverlight 版本 2 的新 JavaScript API

Silverlight 版本 2 提供 Silverlight 1.0 对象集以外的其他对象,这些对象可用于 JavaScript API 中。能够实现上述用法的原因在于这些对象具有的本机实现采用与初始 1.0 对象相同的方式公开。 您可以通过从 XAML 实例化来创建这些对象,之后绑定到对象树。为了使用这些对象,运行基于 Silverlight 的应用程序的客户端还必须是 Silverlight 版本 2 客户端。

用于 JavaScript API 的附加对象包括在 Silverlight 的 JavaScript API 文档中(同时还包括属性 、方法、事件和枚举)。将从基本层级对它们进行介绍。将对新的对象和新的成员进行说明,并且在参考 页中提供“版本信息”部分;而在版本 1.0 中存在的对象和成员没有“版本信息”部分。

JavaScript API 的技术细节

在 JavaScript API 中有若干技术细节不同于托管 API 并且涉及多个 JavaScript API 元素。

JavaScript 和区分大小写

在由 IDispatch 或向承载浏览器脚本引擎提供 Silverlight JavaScript API 的并行机制处理时, JavaScript 脚本、方法和属性名称不视作区分大小写的。因此,如果您愿意,可以混用 XAML 事件属性 值中的首字母大写和实际方法定义中的小写。但是,描述性文本中的 Silverlight 文档语法和标题通常 会使用首字母大写以及某些内部大小写(有时称作“Pascal 大小写”)标准化对象、属性、方法、事件 、枚举和枚举值的大小写。这么做的原因有以下两点:

XAML 区分大小写,因为它遵循 XML 规则。XAML 语法和等效脚本通常在单页上提供,因此,需要标准 化 XAML 强制的大小写。在 Silverlight 文档中提供的标题是 XAML 对象元素或属性的正确大小写形式 。

托管 API 将所有成员都视作区分大小写的,并且使用 Pascal 约定。向 JavaScript 参考提供等效的 大小写有助于迁移途径更加明晰。

请注意,在 Silverlight 文档中提供的 JavaScript 示例代码通常不遵循该约定,而是遵循针对 JavaScript 的常用编码风格约定,即首字母小写(Camel 大小写)。

转载注明地址:http://www.chengxuyuans.com/slverlight/19410.html