[源码下载]
稳扎稳打Silverlight(30) - 2.0Tip/Trick之Silverlight.Js,Silverlight.supportedUserAgent.Js,自定义启动界面,响应鼠标滚轮事件
作者: webabcd
介绍
Silverlight 2.0 提示和技巧系列
@H_419_20@Silverlight.Js - 一些 Js 帮助函数,用于嵌为入 Silverlight 插件以及自定义安装体验等提供帮助 @H_419_20@Silverlight.supportedUserAgent.Js - 就一个函数,用于判断 Silverlight 是否支持用户的浏览器 @H_419_20@自定义启动界面 - 三个参数的综合应用:splashScreenSource,onSourceDownloadProgressChanged,onSourceDownloadComplete @H_419_20@响应鼠标滚轮事件 - 响应并处理鼠标的滚轮事件
在线DEMO
http://www.cnblogs.com/webabcd/archive/2008/10/09/1307486.html
示例
1、Silverlight.Js 和 Silverlight.supportedUserAgent.Js 的常用函数的演示和说明
SilverlightDotJsDemo.HTML
<!--
详解 Silverlight.Js
Silverlight.Js - 一些 Js 帮助函数,用于嵌为入 Silverlight 插件以及自定义安装体验等提供帮助,其最新版本在如下地址下载
http://code.msdn.microsoft.com/silverlightJs
Silverlight.supportedUserAgent.Js - 就一个函数,用于判断 Silverlight 是否支持用户的浏览器,其最新版本在如下地址下载
http://code.msdn.microsoft.com/SLsupportedUA
-->
<! DOCTYPE HTML PUBliC "-//W3C//DTD xhtml 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Transitional.dtd" >
< HTML xmlns ="http://www.w3.org/1999/xhtml" >
< head >
< Title > Silverlight.Js </ Title >
< script type ="text/JavaScript" src ="../Silverlight.Js" ></ script >
< script src ="../Silverlight.supportedUserAgent.Js" type ="text/JavaScript" ></ script >
</ head >
< body >
< div ID ="container" >
< a href ="http://go.microsoft.com/fwlink/?linkID=124807" style ="text-decoration: none;" >
< img src ="http://go.microsoft.com/fwlink/?linkID=108181" alt ="Get Microsoft Silverlight"
style ="border-style: none" />
</ a >
</ div >
< script type ="text/JavaScript" >
// Silverlight.createObject() - 生成一个嵌入了 Silverlight 插件的 object 元素
Silverlight.createObject(
"../ClIEntBin/Silverlight20.xap", // .xap 的地址
document.getElementByID('container'), // 包含此 object 元素的父元素
"slPlugin", // object 元素的 ID
{
wIDth: "100%",
height: "100%",
minRuntimeVersion: "2.0.31005.0"
}, // Silverlight 插件的属性数组
{
onLoad: onslload,
onError: onSLError,
onSourceDownloadComplete: onSourceDownloadComplete
}, // Silverlight 插件的事件处理程序数组
"key1=value1,key2=value2", // 为 Silverlight 程序传递初始化参数(key=value的形式)。用“,”分隔
"myContext" // 上下文信息,可以在插件的 onLoad 事件中获取
);
function onslload(plugin, userContext, sender) {
alert(plugin.ID + " - " + userContext + " - " + sender.toString());
}
function onSLError(sender, args) {
// args - Sys.UI.Silverlight.ErrorEventArgs 类型
// ErrorEventArgs.errorType - 错误类型
// ErrorEventArgs.errorMessage - 错误信息
// ErrorEventArgs.errorCode - 错误代码
// 程序 throw 出的异常可以在此处捕获到
alert(args.errorType + "/n" + args.errorMessage + "/n" + args.errorCode);
}
function onSourceDownloadComplete(sender, args) {
alert("SourceDownloadComplete");
}
// Silverlight.createObjectEx(params) - 将所有参数放入一个数组中传入,其内部会解析这个数组中的参数,然后调用 Silverlight.createObject()
// Silverlight.default_error_handler = function (sender, args){} - onError 事件的默认处理程序,不需要的话可以将其置为 null
</ script >
< script type ="text/JavaScript" >
window.onload = function() {
// getSilverlight() - 尝试下载指定的版本,如果指定空字符串 "" 则为尝试下载最新版本
// Silverlight.getSilverlight("2.0.31005.0");
// isInstalled() - 判断是否安装了指定的 Silverlight 版本
alert(Silverlight.isInstalled("2.0.31005.0"));
// Silverlight.onSilverlightInstalled - 使用 Silverlight.Js 时,如果客户端没有安装 Silverlight 插件,则会自动安装,然后调用此方法以刷新浏览器,可以重写此方法以自定义行为(比如在此通过 createObject() 来使新安装的插件生效,而无需刷新)。注意:如果是 Silverlight 升级,则不会调用此方法,必须重启浏览器(只刷新是不行的)
// supportedUserAgent(version, userAgent) - 判断 Silverlight 是否支持用户的浏览器,省略 userAgent 则为当前浏览器
alert(Silverlight.supportedUserAgent("2.0"));
}
</ script >
</ body >
</ HTML >
2、自定义 Silverlight 程序的启动界面,并显示加载进度
启动界面的 xaml 文件
SplashScreen.xaml
< GrID xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
Background ="Bisque"
>
< StackPanel OrIEntation ="Horizontal" HorizontalAlignment ="Center" VerticalAlignment ="Center" >
< TextBlock Text ="Loading" margin ="3" />
< TextBlock x:name ="percent" Text ="0%" margin ="3" />
</ StackPanel >
</ GrID >
Silverlight 程序全部加载完成前,显示启动界面并显示加载进度
SplashScreen.HTML
<! DOCTYPE HTML PUBliC "-//W3C//DTD xhtml 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Transitional.dtd" >
< HTML xmlns ="http://www.w3.org/1999/xhtml" >
< head >
< Title > SplashScreen </ Title >
@H_231_1301@
@H_502_1304@
< style type ="text/CSS" >HTML, body
{}{
height: 100%;
overflow: auto;
}
body
{}{
padding: 0;
margin: 0;
}
#silverlightControlHost
{}{
height: 100%;
}
</ style >
</ head >
< body >
< div ID ="silverlightControlHost" >
< object ID ="xaml1" data ="data:application/x-silverlight-2," type ="application/x-silverlight-2"
wIDth ="100%" height ="100%" >
< param name ="source" value ="../ClIEntBin/Silverlight20.xap" />
<!-- 下载 source 指定的 xap 的过程中所显示的 xaml 的地址 -->
< param name ="splashScreenSource" value ="SplashScreen.xaml" />
<!-- 下载 source 指定的 xap 的过程中所持续调用的事件 -->
< param name ="onSourceDownloadProgressChanged" value ="onSourceDownloadProgressChanged" />
<!-- souce 指定的 xap 被完全下载后所触发的事件 -->
< param name ="onSourceDownloadComplete" value ="onSourceDownloadComplete" />
</ object >
< iframe style ='visibility: hIDden; height: 0; wIDth: 0; border: 0px' ></ iframe >
</ div >
< script type ="text/JavaScript" >
function onSourceDownloadProgressChanged(sender, args) {
// progress 属性 - 下载进度(0 - 1 之间)
sender.findname("percent").Text = Math.round(args.progress * 10000) / 100 + "%";
}
function onSourceDownloadComplete(sender, args) {
sender.findname("percent").Text = "100%";
}
</ script >
</ body >
</ HTML >
3、响应并处理鼠标的滚轮事件
Wheel.xaml
< UserControl x:Class ="Silverlight20.Tip.Wheel"
xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" >
< StackPanel >
< TextBox x:name ="lblMsg" />
</ StackPanel >
</ UserControl >
Wheel.xaml.cs
/**/ /*
* 如何响应鼠标滚轮事件,可以参看 Deep Zoom Composer 生成的 MouseWheelHelper.cs
*/
using System;
using System.Collections.Generic;
using System.linq;
using System.Net;
using System.windows;
using System.windows.Controls;
using System.windows.documents;
using System.windows.input;
using System.windows.Media;
using System.windows.Media.Animation;
using System.windows.Shapes;
using System.windows.browser;
namespace Silverlight20.Tip
{
public partial class Wheel : UserControl
{
public Wheel()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(Wheel_Loaded);
}
voID Wheel_Loaded(object sender, RoutedEventArgs e)
{
HTMLPage.Window.AttachEvent("DOMMouseScroll", OnMouseWheel);
HTMLPage.Window.AttachEvent("onmousewheel", OnMouseWheel);
HTMLPage.document.AttachEvent("onmousewheel", OnMouseWheel);
}
private voID OnMouseWheel(object sender, HTMLEventArgs args)
{
args.PreventDefault();
double mouseDelta = 0;
ScriptObject eventObj = args.EventObject;
// Mozilla and Safari
if (eventObj.GetProperty("detail") != null)
{
mouseDelta = ((double)eventObj.GetProperty("detail"));
}
// IE and Opera
else if (eventObj.GetProperty("wheelDelta") != null)
{
mouseDelta = ((double)eventObj.GetProperty("wheelDelta"));
}
// IE浏览器:mouseDelta == 120 向上滚动;mouseDelta == -120 向下滚动
// FF浏览器:mouseDelta == -3 向上滚动;mouseDelta == 3 向下滚动
lblMsg.Text += mouseDelta.ToString();
}
}
}
OK
[源码下载] 总结
以上是内存溢出为你收集整理的稳扎稳打Silverlight(30) - 2.0Tip/Trick之Silverlight.js, Silverlight.supportedUserAgent.js, 自定义启动界面, 响应鼠标滚轮事件全部内容,希望文章能够帮你解决稳扎稳打Silverlight(30) - 2.0Tip/Trick之Silverlight.js, Silverlight.supportedUserAgent.js, 自定义启动界面, 响应鼠标滚轮事件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)