`
jiasongmao
  • 浏览: 671284 次
  • 性别: 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>

 

 

分享到:
评论

相关推荐

    JavaScript引用Silverlight统计图

    在JavaScript中,我们可以使用`silverlight.js`库来操作Silverlight对象,例如初始化Silverlight插件、调用Silverlight中的方法或传递数据。`QueryForSilverlightMarker.js`可能包含了这些功能的实现,通过...

    Silverlight如何与JS相互调用

    要从JavaScript调用Silverlight对象的方法,我们需要在HTML页面中设置一个Silverlight对象的ID,然后通过`window.external`对象来访问Silverlight的公共方法。例如: ```html &lt;object id="silverlightControl" data...

    Silverlight-js(SL与JS互相通信实例,说明在xaml.cs文件中)

    通过上述方式,Silverlight-js结合可以创建出强大的Web应用程序,利用Silverlight的图形渲染能力和JavaScript的动态性,为用户提供丰富的交互体验。在深入学习时,建议查看官方文档、教程和示例代码,以更好地理解和...

    Silverlight树形菜单[带图标],silverlight 调用JS

    本话题主要围绕如何在Silverlight中实现带图标的树形菜单以及如何通过Silverlight调用JavaScript来完成特定任务,如退出系统或关闭当前网页。 首先,让我们深入探讨Silverlight中的树形菜单。树形菜单是一种常见的...

    Visual Studio 2010实践:如何在云中运行Silverlight应用

    打开`Views/Shared/Location`下的`Site.Master`文件,在`&lt;head&gt;`标签的适当位置插入Silverlight对象所需的代码(确保引入`Silverlight.js`文件以处理错误)。同时,打开`Views/Home/directory`下的`Index.aspx`文件...

    selenium silverlight 测试接口

    WebDriver 支持多种浏览器,包括Chrome、Firefox、IE等,但对于Silverlight,它需要额外的插件或驱动程序来识别和操作Silverlight对象。例如,使用`SilverlightDriver`,你可以通过WebDriver直接与Silverlight内容...

    Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式

    1. **Silverlight.js**:这是一个JavaScript库,由Microsoft提供,用于在网页中动态加载、初始化和控制Silverlight对象。它包含了一系列方法和属性,如`createObjectEx`函数,用于创建和插入Silverlight插件到HTML文...

    基于js+Silverlight +C#实现的漂亮导航工具栏程序源码例子

    【标题】中的“基于js+Silverlight+C#实现的漂亮导航工具栏程序源码例子”表明这是一个编程项目,它结合了JavaScript、Silverlight和C#三种技术来创建一个美观的导航工具栏。这个项目可能是一个Web应用,因为它涉及...

    如何在Silverlight控件中与Html元素交互

    在Silverlight端,你可以通过`HtmlPage.RegisterScriptableObject()`方法注册一个对象,然后在JavaScript中通过这个对象调用Silverlight方法。 此外,需要注意跨域安全问题。如果Silverlight应用和HTML页面不在同一...

    使用Silverlight Bing Map 加载Google Map

    步骤1:在HTML页面中,嵌入Silverlight对象并设置适当的属性,如源(Source)和初始化参数(InitParams),以便在Silverlight应用启动时传递必要的信息。 步骤2:在Silverlight应用中,创建一个JavaScript调用的...

    SilverLightDemo

    `Page.xaml.js`可能包含一些JavaScript函数,用于处理Silverlight对象的事件,如加载、初始化或错误处理。`Silverlight.js`是微软提供的库文件,用于在浏览器环境中创建和管理Silverlight对象。 `Default_html.js`...

    如何使用Silverlight创建企业应用程序(EN)

    - **打印功能**:虽然Silverlight本身不直接支持打印功能,但可以使用JavaScript或.NET框架中的其他技术来实现。 #### 设计模式 - **Model-View-ViewModel (MVVM)**:这是一种非常流行的架构模式,用于分离数据模型...

    Silverlight 实例源码

    开发者可能需要了解如何在HTML页面中嵌入Silverlight控件,以及如何使用JavaScript调用Silverlight对象的方法和属性。 在Silverlight的网络通信方面,WCF RIA Services或者ASP.NET Web Services通常被用来在客户端...

    silverlight和web页面互相传值

    1. **InvokeScript方法**:在JavaScript中,可以调用Silverlight对象的`invokeScript`方法来调用Silverlight中的公共方法并传递参数。例如: ```javascript var slObject = document.getElementById('...

    Silverlight入门

    - **类与对象**:理解面向对象编程的概念,创建类和对象,实现继承和多态。 ### 6. 银光控件和API - **内置控件**:熟悉Silverlight提供的各种内置控件,如TextBox、RadioButton、ListBox等,以及它们的用法。 - **...

    silverlight上传示例

    通过JavaScript与Silverlight对象交互,将文件选择事件传递给Silverlight应用。 2. **文件选择事件处理**:在Silverlight中监听文件选择事件,获取用户选择的文件信息。你可以使用`System.Windows.Browser....

    Silverlight googlemap baidumap 互动

    这可以通过在JavaScript中调用Silverlight对象的方法实现,反之亦然,Silverlight也可以触发JavaScript函数来更新地图状态。 对于Google Maps API的使用,你需要在HTML中设置API密钥并加载地图库,然后在...

    silverlight与javascript交互操作.doc

    这些特性允许Silverlight对象暴露给JavaScript,使得JavaScript能够调用Silverlight中的方法或者访问其成员。 首先,创建了一个名为`Silverlight_JS_call`的Silverlight应用程序。在这个项目中,添加了一个名为`...

    Silverlight与Html交互

    1. 在HTML页面中,创建一个Silverlight对象,并为其定义一个ID,以便通过JavaScript访问。 2. 在Silverlight项目中,创建一个公开的方法,如`MyMethod`,并添加`[ScriptableMember]`特性。 3. 在JavaScript中,使用`...

Global site tag (gtag.js) - Google Analytics