`
jiasongmao
  • 浏览: 648932 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

通过JS创建silverlight对象

阅读更多

前言:

对于我们开发的silverlight应用来讲,有的时候可能会发布在内网上,或者是对silverlight的版本有着严格的要求等,所以我们希望没有安装过silverlight的客户端能够从自己的网站下载silverlight安装包,并且当安装过silverlight的客户端的版本低于我们系统要求时也能从我们网站下载silverlight安装包。这需要我们采用js来手动的创建silverlight对象。

 

让我们先来了解一下silverlight.js文件

Silverlight.js 文件提供一些 JavaScript 帮助器函数,这些函数用于将 Silverlight 插件嵌入某一网页和用于自定义 Silverlight 安装体验。它大致提供了如下几个方法:

本主题包括下列各节。

createObject

生成一个 HTML object 元素(该元素使用指定的参数值嵌入 Silverlight 插件)或替代 HTML(如果未安装 Silverlight)。

语法

Silverlight.createObject( source , parentElement , id , properties , events , initParams , userContext );

- 或 -

objectElement = Silverlight.createObject( source , null, id , properties , events , initParams , userContext );

参数

source

要加载的应用程序的 URI。请参见Source(Silverlight 插件对象)

parentElement

要在其中插入所生成 HTML 的 HTML 元素;若要返回生成的 HTML 而非插入它,则为 null。

id

生成的 object 元素的 id 属性值。

properties

名称和值对的数组。请参见“备注”。

events

事件名称和函数名称对的数组,将作为子 param 元素添加到生成的 object 元素中。

initParams

包含用逗号分隔的名称和值对的字符串;例如 "name1 =value1 ,name2 =value2 ,name3 =value3 "。

userContext

一个值,它在事件发生时传递到您的 onLoad 事件处理程序。

第一个参数值指定 Silverlight 插件的 Source 值。该值是必需的,它指示应用程序文件的位置和名称。通常在相对于 HTML 文件的位置指定一个 .xap 应用程序包。有关应用程序开发和应用程序包的更多信息,请参见应用程序模型

第二个参数指定将承载 Silverlight 插件的 HTML 元素。在本示例中,宿主元素是父级 div 元素。

第三个参数指定生成的 object 元素的 HTML DOM id

第四个参数指定属性值的数组。有关可用属性的更多信息,请参见 Silverlight 插件对象参考

跨浏览器兼容需要 width height 属性。可以相对于父元素的宽度和高度指定固定像素值或百分比。如果使用相对缩放,可以通过处理 Content. Resized 事件来响应插件大小更改。有关更多信息,请参见调整 Silverlight 插件大小

version 属性指示所需的 Silverlight 版本。将向尚未安装所需版本的用户显示默认的安装映像。有关更多信息,请参见 Silverlight 插件版本控制

第五个参数指定事件处理程序的数组。有关 onLoad 事件处理程序的示例,请参见本主题的结尾部分。

第六个参数指定包含由逗号分隔的名称和值对的字符串。这些值传递到 Application. Startup 事件。有关更多信息,请参见如何:指定和检索自定义初始化参数

第七个参数(也是最后一个参数)指定可用来在 OnLoad 事件处理程序中唯一标识所生成的插件实例的值。有关用法示例,请参见本主题的结尾部分。

返回值

如果 parentElement 为 null,则为生成的 HTML object 元素或替代 HTML;否则不返回任何值。

备注

source 参数以外的所有参数都是可选的。

如果您指定某一 parentElement 值,则 createObject 函数会将该元素的 innerHTML 属性设置为生成的或替代的 HTML。否则,createObject 函数将返回该 HTML。

propertiesevents 数组参数将作为子 param 元素添加到生成的 object 元素。您可以使用 properties 参数来设置包括 background enableHtmlAccess maxFrameRate windowless 的属性。可以使用 events 参数为 onLoad onError 之类的事件指定处理程序。

有关这些属性和事件的信息,请参见 Silverlight 插件对象参考

您可以通过添加名为 version properties 参数,指定所需的 Silverlight 版本。有关更多信息,请参见 Silverlight 插件版本控制

若要指定在未安装 Silverlight 时使用的替代 HTML,请添加名为 alt properties 参数并将该替代 HTML 作为其字符串值。如果您没有提供某一 alt 值,则 createObject 函数将生成默认的安装 HTML。默认的安装 HTML 调用 getSilverlight 函数并向它传递 version 值(如果您已指定了值)。

createObject 函数为 onLoad 事件提供特殊处理。如果您提供一个 onLoad 处理程序,则 createObject 将用调用您的处理程序并向它传递以下参数的函数替换它:

  • 对生成的 object 元素的直接引用。

  • userContext 值。

  • onLoad 事件的 sender 参数值。

这一特殊处理可用于在您使用单个 onLoad 处理程序(在某一网页中具有多个插件实例)时标识已加载插件。

有关更多信息,请参见如何使用 JavaScript 将 Silverlight 添加到网页

createObjectEx

使用在单个数组参数中指定的参数值调用 createObject 函数。

语法

Silverlight.createObjectEx( params );

- 或 -

objectElement = Silverlight.createObjectEx( params );

参数

params

作为单个数组的 createObject 参数值。有关更多信息,请参见 createObject 参数列表。

返回值

请参见 createObject 返回值。

备注

请参见 createObject 备注。

default_error_handler

为在弹出对话框中显示错误数据的 onError 事件提供默认处理程序。

语法

Silverlight.default_error_handler = function( sender , args ) { ... }

参数

sender

发生了错误的插件。

args

事件数据。有关更多信息,请参见 ErrorEventArgs

返回值

处理事件的函数。

备注

您通常通过将 default_error_handler 设置为 null,在生产代码中禁止错误处理。

getSilverlight

尝试下载 Silverlight 安装程序的指定版本。

语法

Silverlight.getSilverlight( version );

参数

version

表示请求的 Silverlight 版本的一个字符串,或者是用于请求最新版本的空字符串 ("")。有关版本号的信息,请参见 Silverlight 插件版本控制

返回值

无。

备注

在您使用 createObjectcreateObjectEx 时,默认的安装 HTML 指定在用户单击安装图像时调用 getSilverlight 函数。如果您提供自己的安装 HTML,则还应在用户请求安装时调用此函数。

getSilverlight 函数调用 onGetSilverlight 函数(如果您指定了该函数)。这使您可以在用户请求 Silverlight 安装程序时、但在安装程序下载开始前作出响应。

然后,getSilverlight 函数将生成并遵循用于指定的 Silverlight 版本的 Silverlight 安装 URI。这通常将向用户显示一个下载提示,而无需导航到不同的网页。但是,如果某一用户采用的是不支持的平台,则此函数会将浏览器导航到描述该问题的 Microsoft 网页。

isBrowserRestartRequired

指示在加载网页时是否已安装 Silverlight 插件,并且如果升级插件则要求浏览器重新启动。

语法

bool = Silverlight.isBrowserRestartRequired;

返回值

如果已安装 Silverlight 插件并且在升级后要求浏览器重新启动,则为 true ;否则为 false

备注

WaitForInstallCompletion 函数调用此函数,以便确定在安装 Silverlight 后是否自动刷新浏览器。

您可以使用 isBrowserRestartRequired 确定是否已安装 Silverlight,以及是否显示一条消息,指出在您升级时要求浏览器重新启动。

isInstalled

指示是否已安装指定的 Silverlight 版本。

语法

bool = Silverlight.isInstalled( version );

参数

version

一个表示 Silverlight 版本号的字符串。有关版本号的信息,请参见 Silverlight 插件版本控制

返回值

如果已安装 Silverlight 的指定版本,则为 true ;否则为 false

备注

createObjectcreateObjectEx 嵌入函数调用 isInstalled 函数,以确定是否已安装所请求的 Silverlight 版本。返回值确定这两个嵌入函数是将生成 HTML object 元素,还是生成提示用户安装或升级的替代 HTML。

WaitForInstallCompletion 函数调用 isInstalled 函数,以便确定自最后一次检查后是否已安装 Silverlight。

onGetSilverlight

getSilverlight 函数调用,以便指示用户已请求 Silverlight 安装程序。

语法

Silverlight.onGetSilverlight = function() { ... };

参数

无。

返回值

getSilverlight 函数调用的函数。

备注

在您使用 createObjectcreateObjectEx 时,默认的安装 HTML 指定在用户单击安装图像时调用 getSilverlight 函数。还可以将 getSilverlight 用于您自己的安装 HTML。

getSilverlight 函数调用 onGetSilverlight 函数(如果您指定了该函数)。这使您无需修改安装 HTML,即可响应安装请求。在安装程序下载开始前调用 onGetSilverlight 函数。

某些浏览器会通过将下载请求映射到用户操作,阻止非预期的文件下载。如果 onGetSilverlight 函数的执行时间过长,则浏览器可能阻止该下载。因此,使 onGetSilverlight 函数避免执行长时间运行的操作非常重要,除非您以异步方式启动它们。您可以通过使用 setTimeout 方法,启动异步操作。

onSilverlightInstalled

WaitForInstallCompletion 函数调用,以便在它检测到已安装 Silverlight 时刷新浏览器。

语法

Silverlight.onSilverlightInstalled = function() { ... };

参数

无。

返回值

WaitForInstallCompletion 函数调用的函数。

备注

WaitForInstallCompletion 函数在它检测到已安装 Silverlight 时将调用 onSilverlightInstalled 函数。但在用户从以前的版本升级 Silverlight 时,将不会发生上述调用。在这种情况下,用户必须重新启动浏览器。

您通常将使用 isBrowserRestartRequired 函数确定是否需要升级,然后显示相应消息。

默认 onSilverlightInstalled 函数将刷新浏览器窗口。您可以在网页的 onLoad 事件的处理程序中替换此行为。可以通过将该函数设置为 null,禁用自动刷新;或者,可以将其设置为您自己的函数。例如,代替刷新浏览器,您可以使用 createObjectcreateObjectEx 将新的 HTML object 元素直接插入您的网页。这样,无需浏览器刷新便可以嵌入新安装的插件。

WaitForInstallCompletion

定期检查是否有新的 Silverlight 安装,并在安装后刷新浏览器窗口。

语法

Silverlight.WaitForInstallCompletion();

参数

无。

返回值

无。

 

 

 

 

<script type="text/javascript">

            var getSilverlightMethodCall = "DownloadSL.aspx"
            var installImageUrl = "images/SLMedallion_CHS.png";
            var imageAltText = "Get Silverlight";
            var altHtml = "<a href='{1}' style='text-decoration: none;'>" + "<img src='{2}' alt='{3}' " + "style='border-style: none'/></a>";
            altHtml = altHtml.replace('{1}', getSilverlightMethodCall);
            altHtml = altHtml.replace('{2}', installImageUrl);
            altHtml = altHtml.replace('{3}', imageAltText);

            if (Silverlight.isInstalled("4.0.50401.0")) {
                Silverlight.createObject(
					"ClientBin/silverlightdemo.xap",
					document.getElementById('silverlightControlHost'),
					"silverlightObject",
					{
					    width: "100%",
					    height: "100%",
					    background: "white",
					    alt: altHtml,
					    version: "4.0.50401.0",
					    windowless: "true",
					    splashscreensource: "Loading.xaml",
                        autoUpgrade:"false"
					},
					{
					    onSourceDownloadProgressChanged: onSourceDownloadProgressChanged,
					    onError: onSilverlightError
					},
					"UserAccount=<%=HttpContext.Current.User.Identity.Name%>",
					null
				);
            }
	        else {
	            if (confirm("您安装的silverlight版本低于本系统的要求,\r\n是否需要更新其版本?"))
                {
                    var url="/DownloadSL.aspx";
                    top.location=url;
                }
            }
		</script>

 

 

分享到:
评论

相关推荐

    Silverlight常例整理打包

    来源:http://blog.csdn.net/daizhj/category/599442.aspx 打包项目: silverlight中开发User Control light与javascript交互操作 ...Silverlight中使用TabControl createObject(createObjectEx)创建silverlight对象

    Silverlight2.0功能展示Demo源码

    Silverlight2.0功能展示Demo源码 1、Silverlight(3) - 2.0控件之Border, Button, Calendar, Canvas, CheckBox, ComboBox ...HtmlWindow - 提供 JavaScript 的 window 对象的 Silverlight 端的托管表示形

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    4.2.6 通过编程创建服务器控件 4.2.7 处理服务器端事件 4.3 Web控件 4.3.1 WebControl基类 4.3.2 基本的Web控件类 4.3.3 单位 4.3.4 枚举 4.3.5 颜色 4.3.6 字体 4.3.7 焦点 4.3.8 默认按钮 ...

    ASP.NET4高级程序设计(第4版) 3/3

    4.2.6 通过编程创建服务器控件 103 4.2.7 处理服务器端事件 104 4.3 Web控件 107 4.3.1 WebControl基类 107 4.3.2 基本的Web控件类 108 4.3.3 单位 109 4.3.4 枚举 110 4.3.5 颜色 110 4.3.6 字体...

    ASP.NET.4揭秘

    19.4 使用.net framework创建数据库对象706 19.4.1 启用clr集成706 19.4.2 使用.net framework创建用户自定义类型707 19.4.3 使用用户自定义类型创建数据访问层710 19.4.4 使用.net framework创建存储过程713 19.4.5...

    河马动画师 Hippo Animator 5.1.5995 中文多语版 HTML 动画工作室.rar

    Hippo Animator 软件特色: 专业软件 Hippo Animator 是一家特色包装的动画工作...创建先进的交互式网站,复杂的游戏和应用程序使用内置的 javascript 引擎。您在测试的 Javascript Hippo Animator 导出时的工作一样。

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    8.4.1 封装js客户端对象 323 8.4.2 封装htc客户端对象 343 8.4.3 在线签名控件示例应用 371 8.5 常用的一些javascript框架 385 8.6 本章总结 387 第9章 定制用户控件 388 9.1 用户控件概述 388 9.1.1 用户...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    8.4.1 封装js客户端对象 323 8.4.2 封装htc客户端对象 343 8.4.3 在线签名控件示例应用 371 8.5 常用的一些javascript框架 385 8.6 本章总结 387 第9章 定制用户控件 388 9.1 用户控件概述 388 9.1.1 用户...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    8.4.1 封装js客户端对象 323 8.4.2 封装htc客户端对象 343 8.4.3 在线签名控件示例应用 371 8.5 常用的一些javascript框架 385 8.6 本章总结 387 第9章 定制用户控件 388 9.1 用户控件概述 388 9.1.1 用户...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Chrome Frame 会把最新版的Chrome Webkit 内核和JavaScript 引擎注入到IE中, IE浏览器将获得Chrome的性能和功能 目录 摘要 I ABSTRACT II 专业名词清单 III 第一章 绪论 1 1.1 研究背景与意义 1 1.2国内外相关...

    Knockout API 中文版

    Knockout是一个以数据模型(data model)为基础的能够帮助你创建富文本,响应显示和编辑用户界面的JavaScript类库。任何时候如果你的UI需要自动更新(比如:更新依赖于用户的行为或者外部数据源的改变),KO能够很...

Global site tag (gtag.js) - Google Analytics