稳扎稳打Silverlight(30) - 2.0TipTrick之Silverlight.js, Silverlight.supportedUserAgent.js, 自定义启动界面, 响应鼠标滚轮事件

稳扎稳打Silverlight(30) - 2.0TipTrick之Silverlight.js, Silverlight.supportedUserAgent.js, 自定义启动界面, 响应鼠标滚轮事件,第1张

概述[索引页] [源码下载] 稳扎稳打Silverlight(30) - 2.0Tip/Trick之Silverlight.js, Silverlight.supportedUserAgent.js, 自定义启动界面, 响应鼠标滚轮事件 作者: webabcd 介绍 Silverlight 2.0 提示和技巧系列 Silverlight.js - 一些 js 帮助函数,用于嵌为入 Silverligh [索引页]
[源码下载]


稳扎稳打Silverlight(30) - 2.0Tip/Trick之Silverlight.Js,Silverlight.supportedUserAgent.Js,自定义启动界面,响应鼠标滚轮事件

作者: webabcd


介绍
Silverlight 2.0 提示和技巧系列
@[email protected] - 一些 Js 帮助函数,用于嵌为入 Silverlight 插件以及自定义安装体验等提供帮助 @[email protected] - 就一个函数,用于判断 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" >

        
< 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, 自定义启动界面, 响应鼠标滚轮事件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1050893.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存