Widget技术研究
目 录
1. 引言 1
2. 原理 2
3. 主要技术 2
3.1 Widget引擎安装配置 2
3.2 XML解析器 2
3.3 JavaScript引擎 4
3.4 XML Services 5
4. 代表性作品 5
5. Mugsho实现方案 6
6. 总结 6
1. 引言
互联网进入Web2.0时代,本质是用户产生信息。既然每个人都是信息的制造者,信息量必然越来越多,这时必须通过一个机制来定制自己所需获得的信息,Widget是互联网应用的产物,更加开放,更便于信息获取。Widget在互联网中的作用主要体现在以下两点:首先,实现了桌面应用和网络服务的结合,用户可以不用从浏览器登录网站就可以获得网络信息;其次,它提供了一个平台,用户可以自由地创建、发布、共享各类业务应用。
Widget主要有身材微、形式多、功能巨、姿容丽、个性化、易制作等特征,由于这些特征,Widget得到广泛地应用,Widget应用和Widget思想正在入侵传统的互联网,未来将是Widget化时代-个性化信息定制时代。
随着Widget应用的不断演进,国际上很多Widget产品已经开始在手机媒体上应用。Nokia推出了S60平台的Widget,苹果的iPhone也搭载了Widget,然而由于规范的不统一,各个厂家的Widget应用还不能做到互通。随着标准的制定,未来Widget会向着跨平台、跨系统、跨终端方向发展,这才能充分体现Web2.0所倡导的用户参与的实质。
Widget主要有身材微、形式多、功能巨、姿容丽、个性化、易制作等特征,由于这些特征,Widget得到广泛地应用,Widget应用和Widget思想正在入侵传统的互联网,未来将是Widget化时代-个性化信息定制时代。
随着Widget应用的不断演进,国际上很多Widget产品已经开始在手机媒体上应用。Nokia推出了S60平台的Widget,苹果的iPhone也搭载了Widget,然而由于规范的不统一,各个厂家的Widget应用还不能做到互通。随着标准的制定,未来Widget会向着跨平台、跨系统、跨终端方向发展,这才能充分体现Web2.0所倡导的用户参与的实质。
目前Widget主要有5个分类:操作系统Widget、网页Widget、个人化首页Widget、客户端Widget以及手机Widget。互联网的之所以能够互联,是因为有各种各样的标准和约定,比如TCP/IP协议。有了这些共识,互联网能够方便地联系起来。Widget发展和Widget的各种应用,专注于个性化首页的Netvibes推出标准化Widget的概念(UWA),随着Widget标准化的推广,Widget的发展空间必将更加开阔。Widget可能会被应用到软件里,也有人预言,Widget将会成为未来互联网广告的新载体。
2. 原理
Engine是Widget的核心,就像java的虚拟机一样,如果想运行一个Widget,系统必须先启动Widget Engine来解释代码。
Engine通过XML定义的属性来显示Widget的外观和配置属性,在XML中可以定义界面使用的图片,这样就可以通过图形修改软件来自己定义个性化的界面了。制作Widget一定有一些功能,这些功能由JavaScript来实现。
Engine通过XML定义的属性来显示Widget的外观和配置属性,在XML中可以定义界面使用的图片,这样就可以通过图形修改软件来自己定义个性化的界面了。制作Widget一定有一些功能,这些功能由JavaScript来实现。
3. 主要技术
本文使用的是Yahoo!Widget,Yahoo!Widget是由雅虎推出的免费并开放源码的桌面应用程序平台。它由Widget引擎和Widget工具两部分组成。将从这两个问题介绍Widget的开发。
3.1 Widget引擎安装配置
在雅虎中国Widget下载www.lunwen36/map.html,在Windows和Mac OS X上都可执行。Windows:等级需为Windows 2000 Service Pack 3 或以上版本或Windows XP SP1或以上版本。Macintosh:等级则需为Mac OS X 10.3 或以上版本。内存需求为512MB以上,使用宽带网络不小于512k的计算机系统。安装引擎后就能在此平台上运行各式各样的Widget工具了。
Widget 提供一些存放设定值的对象。这些设定值存放在每个用户的偏好设置区域中。在Mac 上,此设定值位于~/ Library/Preferences/Konfabulator 中。在PC 上,此设定值位于HKEY_CURRENT_USER\ Software\Yahoo\WidgetEngine 中。
在雅虎中国Widget下载www.lunwen36/map.html,在Windows和Mac OS X上都可执行。Windows:等级需为Windows 2000 Service Pack 3 或以上版本或Windows XP SP1或以上版本。Macintosh:等级则需为Mac OS X 10.3 或以上版本。内存需求为512MB以上,使用宽带网络不小于512k的计算机系统。安装引擎后就能在此平台上运行各式各样的Widget工具了。
Widget 提供一些存放设定值的对象。这些设定值存放在每个用户的偏好设置区域中。在Mac 上,此设定值位于~/ Library/Preferences/Konfabulator 中。在PC 上,此设定值位于HKEY_CURRENT_USER\ Software\Yahoo\WidgetEngine 中。
3.2 XML解析器
Yahoo! Widget Engine使用XML来定义Widget工具以及组成它们的对象,有功能强大的X
Yahoo! Widget Engine使用XML来定义Widget工具以及组成它们的对象,有功能强大的X
ML 解析器,这表示可以使用标签批注样式或混合搭配样式。
标签批注样式:
< image >
<src>images/image.png</src>
<name>myImage</name>
</image>
混合搭配样式:
<image src="images/image.png"> <name>myImage</name></image>
可以将XML 解析器设定为「严格」模式。这表示它将会采用某些过去未曾使用的方式来强制执行XML 规则。实际上,它在许多方面都不是很严格的。要启用此模式,只需将以下这一行加到XML 文件的上方即可:< ? konfabulator xml-strict="true"?>。在严格模式下,将会强制执行以下操作:所有的属性值都必须加上引号;文字区段中不允许使用单独的"&" 字符(只能是这样的形式&);实体(以"&" 开头的字符串) 的属性值会被评估;批注中不允许使用双横线("--")。因此最好将程序代码放进CDATA 标签中;如果包含了外部文件,不会在该文件中替代等实体。
标签批注样式:
< image >
<src>images/image.png</src>
<name>myImage</name>
</image>
混合搭配样式:
<image src="images/image.png"> <name>myImage</name></image>
可以将XML 解析器设定为「严格」模式。这表示它将会采用某些过去未曾使用的方式来强制执行XML 规则。实际上,它在许多方面都不是很严格的。要启用此模式,只需将以下这一行加到XML 文件的上方即可:< ? konfabulator xml-strict="true"?>。在严格模式下,将会强制执行以下操作:所有的属性值都必须加上引号;文字区段中不允许使用单独的"&" 字符(只能是这样的形式&);实体(以"&" 开头的字符串) 的属性值会被评估;批注中不允许使用双横线("--")。因此最好将程序代码放进CDATA 标签中;如果包含了外部文件,不会在该文件中替代等实体。
Widget主要有以下对象和属性:[相关阅读MANET和Internet互联的仿真小探]
<action>是与对象没有关联的程序代码标签,属性有file、interval、以及rigger,action 标签可定义Widget 执行程序代码的时间与方式,它是自动触发的,而非由用户触发。
file为外部JavaScript文件的路径;interval为在触发之间等待的秒数;trigger 触发程序代码的事件,主要有onKeyDown、onKeyUp、onTimer以及onLoad等。
<frame>为框体标签,框体可作为其它对象的容器。可以在XML 中将其它对象置于框体之内,也可以使用JavaScript 来将其它对象放到框体之内。框体移动之后,所有子视图也会移动。同样地,当框体的透明度改变时,其中每个项目的有效透明度也都会改变。属性有contextMenuItems、onMouseDown、scrollX、scrollY、visible等。
<hotkey>为定义热键及相关默认属性的标签,可以为Widget 中的热键定义初始按键及辅助按键。热键是系统级的按键触发器,它允许通过键盘来存取Widget。举例来说,可以将搜寻Widget 的功能设计为Control+Shift+F2 组合键。主要属性有key、modifier、name、onKeyDown、onKeyUp 等。
<image>是定义图片及相关默认属性的标签可以为Widget 中的静态图片对象定义初始位置及鼠标事件代码。主要属性有alignment、clipRect、colorize 、contextMenuItems等。
<action>是与对象没有关联的程序代码标签,属性有file、interval、以及rigger,action 标签可定义Widget 执行程序代码的时间与方式,它是自动触发的,而非由用户触发。
file为外部JavaScript文件的路径;interval为在触发之间等待的秒数;trigger 触发程序代码的事件,主要有onKeyDown、onKeyUp、onTimer以及onLoad等。
<frame>为框体标签,框体可作为其它对象的容器。可以在XML 中将其它对象置于框体之内,也可以使用JavaScript 来将其它对象放到框体之内。框体移动之后,所有子视图也会移动。同样地,当框体的透明度改变时,其中每个项目的有效透明度也都会改变。属性有contextMenuItems、onMouseDown、scrollX、scrollY、visible等。
<hotkey>为定义热键及相关默认属性的标签,可以为Widget 中的热键定义初始按键及辅助按键。热键是系统级的按键触发器,它允许通过键盘来存取Widget。举例来说,可以将搜寻Widget 的功能设计为Control+Shift+F2 组合键。主要属性有key、modifier、name、onKeyDown、onKeyUp 等。
<image>是定义图片及相关默认属性的标签可以为Widget 中的静态图片对象定义初始位置及鼠标事件代码。主要属性有alignment、clipRect、colorize 、contextMenuItems等。
xml技术的主要应用 <menuItem>为定义菜单项目的标签,可以由菜单数组及句柄使用,为标准Widget 菜单提供其它项目。主要属性有checked、enabled、onSelect、title等。
<preference> 定义偏好设置以及相关属性的标签偏好标签可以定义将要由Widget 在打开/关闭工作阶段之间存放的信息标签以及用户输入的数据。有两个自动提供的偏好设置:konfabulatorWindowLevel Widget为窗口显示在用户屏幕上的高度,有效值包括floating、topMost、normal、below 或desktop;konfabulatorWindowOpacity Widget为窗口的透明度。主要属性有defaultValue、description、directory、extension等。
<preferenceGroup>定义组织偏好设置的组,可以让你在显示在「偏好设置」对话框中时组织偏好设置。可以先使用preferenceGroups 来定义组,然后再在特殊组中设定要的每个偏好设置的组属性。主要属性有name、icon、order、title等。
<scrollbar>指定滚动条对象,主要属性有autoHide、hAlign、height、hOffset、max、min等。
<security>指定对象的安全属性,会通知引擎Widget 可以做以及不可以做的事情。它可以用来强迫行为保护Widget 中的用户不会不时到其范围之外。
<shadow>指定对象的阴影参数,只能在关于方块文字项目中使用。它可以让将项目上的
<preference> 定义偏好设置以及相关属性的标签偏好标签可以定义将要由Widget 在打开/关闭工作阶段之间存放的信息标签以及用户输入的数据。有两个自动提供的偏好设置:konfabulatorWindowLevel Widget为窗口显示在用户屏幕上的高度,有效值包括floating、topMost、normal、below 或desktop;konfabulatorWindowOpacity Widget为窗口的透明度。主要属性有defaultValue、description、directory、extension等。
<preferenceGroup>定义组织偏好设置的组,可以让你在显示在「偏好设置」对话框中时组织偏好设置。可以先使用preferenceGroups 来定义组,然后再在特殊组中设定要的每个偏好设置的组属性。主要属性有name、icon、order、title等。
<scrollbar>指定滚动条对象,主要属性有autoHide、hAlign、height、hOffset、max、min等。
<security>指定对象的安全属性,会通知引擎Widget 可以做以及不可以做的事情。它可以用来强迫行为保护Widget 中的用户不会不时到其范围之外。
<shadow>指定对象的阴影参数,只能在关于方块文字项目中使用。它可以让将项目上的
实心阴影设定为某种颜及透明度。
<text>是定义文字及关联默认属性的标签,XML 文件中的text 标签可以为Widget 中的静态文字定义初始位置及鼠标事件代码。主要属性有alignment、bgColor、bgOpacity、color、contextMenuItems、data等。
<textarea>是定义textarea对象及默认属性的标签,可以为Widget中的可编辑文字定义初始位置及鼠标事件代码。主要属性有alignment、bgColor、bgOpacity、color、contextMenuItems、data等。
<timer>是定义定时器的标签,以固定的时间间隔(例如每隔5 秒) 来执行工作,或者也可以用来单纯在稍后的时间单次触发。主要属性有interval、name、ticking 、onTimerFired等。
<window>为定义Widget的主窗口的标签,说明了Widget 窗口的大小及位置。此窗口一定是透明的,而且只有放到其中的图片及文字才会显示给用户。主要属性alignment 、contextMenuItems、height等。
<text>是定义文字及关联默认属性的标签,XML 文件中的text 标签可以为Widget 中的静态文字定义初始位置及鼠标事件代码。主要属性有alignment、bgColor、bgOpacity、color、contextMenuItems、data等。
<textarea>是定义textarea对象及默认属性的标签,可以为Widget中的可编辑文字定义初始位置及鼠标事件代码。主要属性有alignment、bgColor、bgOpacity、color、contextMenuItems、data等。
<timer>是定义定时器的标签,以固定的时间间隔(例如每隔5 秒) 来执行工作,或者也可以用来单纯在稍后的时间单次触发。主要属性有interval、name、ticking 、onTimerFired等。
<window>为定义Widget的主窗口的标签,说明了Widget 窗口的大小及位置。此窗口一定是透明的,而且只有放到其中的图片及文字才会显示给用户。主要属性alignment 、contextMenuItems、height等。
3.3 JavaScript引擎
Yahoo! Widget Engine内建了JavaScript引擎,符合JavaScript 1.5标准。主要有通用函数
Yahoo! Widget Engine内建了JavaScript引擎,符合JavaScript 1.5标准。主要有通用函数
、系统属性与函数以及Widget对象属性与函数。
通用函数主要包括以下几个函数:
alert() 为显示警告对话框;语法定义:alert(string, [button one, button two, button three])。
appleScript() 执行AppleScript;语法定义:appleScript(appleScriptCode[, timeout])。
bytesToUIString() 将字节数组转换为容易使用的字符串;语法定义:string = bytesToUIString(integer)。
chooseColor()建立标准的彩选择对话框,让用户选择颜;语法定义:string = chooseColor( [string] )。
chooseFile() 建立标准文件对话框,且允许用户选择文件;语法定义:file = chooseFile([string | array])。
chooseFolder() 建立标准文件对话框,且允许用户选择文件夹;语法定义:file = chooseFolder()。
convertPathToHFS()将UNIX样式路径转换为HFS样式路径;语法定义:convertPathToHFS(myPath[, localize])。
通用函数主要包括以下几个函数:
alert() 为显示警告对话框;语法定义:alert(string, [button one, button two, button three])。
appleScript() 执行AppleScript;语法定义:appleScript(appleScriptCode[, timeout])。
bytesToUIString() 将字节数组转换为容易使用的字符串;语法定义:string = bytesToUIString(integer)。
chooseColor()建立标准的彩选择对话框,让用户选择颜;语法定义:string = chooseColor( [string] )。
chooseFile() 建立标准文件对话框,且允许用户选择文件;语法定义:file = chooseFile([string | array])。
chooseFolder() 建立标准文件对话框,且允许用户选择文件夹;语法定义:file = chooseFolder()。
convertPathToHFS()将UNIX样式路径转换为HFS样式路径;语法定义:convertPathToHFS(myPath[, localize])。
convertPathToPlatform() 将JavaScript 样式路径转换为平台特定样式路径;语法定义:convertPathToPlatform(myPath[, forDisplay])。
play( ) 播放音效文件;语法定义:play(pathToSound[, truncate])。
closeWidget() 关闭Widget。
escape() 编码字符串为安全的URL 使用。
系统属性与函数主要包括以下几个函数:
COM在Windows上调用COM接口的函数: createObject、connectObject以及disconnectObject。ateObject( progID|CLSID ) 可连接任何COM 对象;tObject 连接对象以获取对象事件;ateObject 通过ProgID 或CLSID 建立COM 对象。
FileSystem对象可提供Widget 将在其上执行的对于系统基础文件及目录的存取。主要有copy()、emptyRecycleBin()/emptyTrash()、getDirectoryContents()、getDisplayName()、getFileInfo()、getRecycleBinInfo()/getTrashInfo()、isDirectory()等。
关于显示的信息的screen对象拥有描述目前屏幕量制的不同属性(Widget 主窗口一般所在的显示画面)。主要属性有AvailHeight、AvailLeft、AvailTop、AvailWidth、ColorDepth等。
play( ) 播放音效文件;语法定义:play(pathToSound[, truncate])。
closeWidget() 关闭Widget。
escape() 编码字符串为安全的URL 使用。
系统属性与函数主要包括以下几个函数:
COM在Windows上调用COM接口的函数: createObject、connectObject以及disconnectObject。ateObject( progID|CLSID ) 可连接任何COM 对象;tObject 连接对象以获取对象事件;ateObject 通过ProgID 或CLSID 建立COM 对象。
FileSystem对象可提供Widget 将在其上执行的对于系统基础文件及目录的存取。主要有copy()、emptyRecycleBin()/emptyTrash()、getDirectoryContents()、getDisplayName()、getFileInfo()、getRecycleBinInfo()/getTrashInfo()、isDirectory()等。
关于显示的信息的screen对象拥有描述目前屏幕量制的不同属性(Widget 主窗口一般所在的显示画面)。主要属性有AvailHeight、AvailLeft、AvailTop、AvailWidth、ColorDepth等。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论