1、融智技术学院融智技术学院第第14章章 JavaScript与插件通信与插件通信 在在“定位对象和嵌入对象定位对象和嵌入对象”章节,已经较为详细地介绍章节,已经较为详细地介绍了使用了使用applet、embed和和object元素对象在页面中嵌入元素对象在页面中嵌入Java Applet和和Flash等插件的方法,扩展了等插件的方法,扩展了JavaScript脚本语言的脚本语言的功能,但并未论述功能,但并未论述JavaScript脚本如何与上述插件通信。本脚本如何与上述插件通信。本章将在章将在“定位对象和嵌入对象定位对象和嵌入对象”章节的基础上,主要通过实章节的基础上,主要通过实例介绍例介绍Ja
2、vaScript脚本与脚本与Java Applet、Flash及其他浏览器及其他浏览器插件进行通信的细节。插件进行通信的细节。融智技术学院融智技术学院14.1 浏览器插件浏览器插件 浏览器插件的引入,结束了一旦用户与页面交互就必须浏览器插件的引入,结束了一旦用户与页面交互就必须重载页面的历史,大大增加了页面的动态性和交互性,是万重载页面的历史,大大增加了页面的动态性和交互性,是万维网发展过程中最为绚丽多彩的一笔。使用浏览器插件可收维网发展过程中最为绚丽多彩的一笔。使用浏览器插件可收听网络音乐和无线电广播、收看在线电视和电影、参加在线听网络音乐和无线电广播、收看在线电视和电影、参加在线游戏等,可
3、以说,浏览器插件的触角已经延伸到万维网应用游戏等,可以说,浏览器插件的触角已经延伸到万维网应用的每个角落。的每个角落。融智技术学院融智技术学院14.1.1 流行的浏览器插件流行的浏览器插件 历史上曾出现了相当多的浏览器插件,如历史上曾出现了相当多的浏览器插件,如Netscape公公司推出的司推出的Live系列插件系列插件LiveAudio、Live3D和和LiveVideo以以及媒体播放器插件及媒体播放器插件Netscape Media Player等,分别用于播等,分别用于播放语音文件(放语音文件(WAV、AU、AIFF和和MIDI格式)、显示三维格式)、显示三维VRML(虚拟现实模型语言)
4、文件、播放(虚拟现实模型语言)文件、播放AVI格式影像、播放格式影像、播放流媒体文件(或同步对媒体文件),且上述插件均支持流媒体文件(或同步对媒体文件),且上述插件均支持LiveConnect技术,可使用技术,可使用JavaScript脚本进行动态控制。脚本进行动态控制。融智技术学院融智技术学院14.1.2 检测已安装的插件检测已安装的插件 在在Internet Explorer中所有插件均作为中所有插件均作为ActiveX控件而控件而存在,为查看操作系统中已安装的所有插件,可使用存在,为查看操作系统中已安装的所有插件,可使用Microsoft公司提供的公司提供的OLE/COM Object
5、Viewer工具软件进工具软件进行检测,读者可从行检测,读者可从Microsoft公司的官方网站免费下载使用。公司的官方网站免费下载使用。该软件安装完成后,双击其快捷方式图标运行,自动检测本该软件安装完成后,双击其快捷方式图标运行,自动检测本地计算机上已安装的所有地计算机上已安装的所有ActiveX、OLE和和COM对象,并分对象,并分类输出详细的信息如类输出详细的信息如CLSID、Version等。等。融智技术学院融智技术学院14.2 JavaScript与与Java Applet通信通信 在在HTML文档中嵌入文档中嵌入Java Applet可大大增加目标页面可大大增加目标页面的动态性和交
6、互性,同时可使用的动态性和交互性,同时可使用JavaScript脚本动态地控制脚本动态地控制其外观属性。在某种条件下,其外观属性。在某种条件下,JavaScript和和Java Applet之之间能够实现双向通信,且不同的间能够实现双向通信,且不同的Java Applet之间也能互相之间也能互相访问。访问。在常见的在常见的B/S(Browser/Server)架构下,架构下,实现实现JavaScript与与Java Applet相互通信的功能后,能相互通信的功能后,能充分融合充分融合Java和和JavaScript语言的诸多优势,开发出更友好、动态语言的诸多优势,开发出更友好、动态性能更强的性
7、能更强的Web应用程序。应用程序。融智技术学院融智技术学院14.2.1 JavaScript脚本访问脚本访问Java Applet 由于由于JavaScript为弱类型语言,仅提供一种数据类型,为弱类型语言,仅提供一种数据类型,而而Java为强类型语言,具有大量明确的原始类型,在调用为强类型语言,具有大量明确的原始类型,在调用Applet中定义的公有类型字段时,一般将进行类型转换,有中定义的公有类型字段时,一般将进行类型转换,有关数据类型转换的知识,请读者自行参考关数据类型转换的知识,请读者自行参考JavaScript权威权威指南指南一书相关章节。一书相关章节。融智技术学院融智技术学院14.2
8、.2 Java Applet访问访问JavaScript脚本脚本 在编译成在编译成Java Applet对应的对应的.class类型文件时,需指类型文件时,需指定定netscape.javascript.JSObject类定义的存放位置,并根类定义的存放位置,并根据此路径设定环境变量据此路径设定环境变量CLASSPATH,其中包含,其中包含Java编译器编译器应检索的类定义目录和应检索的类定义目录和.jar(或(或.zip)文件。按照上述步骤设)文件。按照上述步骤设置后,便可成功编译包含上述执行置后,便可成功编译包含上述执行Java Applet与与JavaScript脚本交互功能的脚本交互功
9、能的.java类型代码为类型代码为Java Applet对对应的应的.class文件格式。文件格式。有关编译方面的基础知识,请读者自行参考有关编译方面的基础知识,请读者自行参考JavaScript权威指南权威指南(第四版)一书相关章节的讲述。(第四版)一书相关章节的讲述。融智技术学院融智技术学院14.2.3 Java Applet安全性问题与措施安全性问题与措施 当然,当然,Java Applet也存在初始化时间较长、也存在初始化时间较长、Java虚拟虚拟机(机(Java Virtual Machine:JVM)执行代码的速度较慢等)执行代码的速度较慢等缺点,其中最为显著的不足为其安全性问题。
10、缺点,其中最为显著的不足为其安全性问题。Java Applet在执行之前依靠用户对其进行安全处理(在执行之前依靠用户对其进行安全处理(如选择是否下载、安装等),此种方法存在两个非常明显的如选择是否下载、安装等),此种方法存在两个非常明显的缺点:一是它依靠用户来进行验证,二是控件的安全性又依缺点:一是它依靠用户来进行验证,二是控件的安全性又依赖于签名软件本身的可靠性。基于此,赖于签名软件本身的可靠性。基于此,Java提供提供“沙箱沙箱”(sandboxing)理论来保证)理论来保证Java Applet的安全性。的安全性。融智技术学院融智技术学院14.3 JavaScript与与Flash通信通
11、信 Flash为交互式矢量多媒体技术,基于早期的矢量动画为交互式矢量多媒体技术,基于早期的矢量动画插件,已成为交互式矢量的实际标准。插件,已成为交互式矢量的实际标准。Flash支持独特的时间支持独特的时间片段分割(片段分割(TimeLine)和重组()和重组(MC嵌套)技术,结合其嵌套)技术,结合其ActionScipt脚本的对象和流程控制概念,使得灵活的界面设脚本的对象和流程控制概念,使得灵活的界面设计和动画设计成为可能。与计和动画设计成为可能。与Java语言相同的是,语言相同的是,Flash具有跨具有跨平台的特性,无论处于何种平台,只要客户端安装了平台的特性,无论处于何种平台,只要客户端安
12、装了Flash播播放器,就可保证放器,就可保证Flash的最终显示效果一致,而不需要为各种的最终显示效果一致,而不需要为各种平台设计不同的平台设计不同的Flash动画。动画。融智技术学院融智技术学院14.3.1 JavaScript脚本访问脚本访问Flash Flash提供大量的函数用于提供大量的函数用于JavaScript脚本访问脚本访问Flash动动画,如画,如Zoom(percent)函数用于函数用于Flash动画的缩放、动画的缩放、Pan(x,y,mode)函数将函数将Flash动画平移到指定的位置等。动画平移到指定的位置等。融智技术学院融智技术学院14.3.2 Flash访问访问Ja
13、vaScript脚本脚本 较之于较之于JavaScript脚本访问脚本访问Flash而言,而言,Flash访问访问JavaScript脚本的方法更为简单、直接。值得注意的是,如果脚本的方法更为简单、直接。值得注意的是,如果使用使用embed元素对象引入元素对象引入Flash动画,动画,Flash访问访问JavaScript脚本的接口会默认为脚本的接口会默认为“打开打开”,不需设定任何参数。与此不同,不需设定任何参数。与此不同的是,如果使用的是,如果使用embed元素对象引入元素对象引入Flash动画,则动画,则Flash访访问问JavaScript脚本的接口会默认为脚本的接口会默认为“关闭关闭
14、”,则需在其对应代,则需在其对应代码段中设定码段中设定embed元素对象的元素对象的swLiveConnect属性值为布尔属性值为布尔值值“true”。融智技术学院融智技术学院14.3.3 getURL()函数函数 该函数主要用于模拟该函数主要用于模拟JavaScript脚本中脚本中Window对对象的象的open()方法来打开由参数指定的文档,也可调用在方法来打开由参数指定的文档,也可调用在脚本中定义的函数,或执行以脚本中定义的函数,或执行以“JavaScript:”引入的简短引入的简短脚本命令。此函数的语法如下:脚本命令。此函数的语法如下:getURL(url:String,window:
15、String,method:String)融智技术学院融智技术学院14.3.4 fsCommand()函数函数 在在Web页面中嵌入页面中嵌入Flash动画后,使用某个媒介(如按动画后,使用某个媒介(如按钮、超链接等)触发钮、超链接等)触发fsCommand()函数时将调用使用函数时将调用使用JavaScript脚本定义的函数脚本定义的函数FlashID_DoFSCommand(),该,该函数位于包含目标函数位于包含目标Flash动画的动画的HTML文档内,其中文档内,其中FlashID为嵌入为嵌入Flash动画所用的动画所用的embed元素对象的元素对象的name属性或属性或object元素
16、对象的元素对象的id属性。属性。融智技术学院融智技术学院14.3.5 综合应用实例综合应用实例 首先启动首先启动“Macromedia Flash MX 2004”,新建空白文档,新建空白文档“MyFlash.fla”,设定区域大小为,设定区域大小为400*180px,场景背景颜色为,场景背景颜色为“#c0c0c0”,并添加动态文本框(变量名为,并添加动态文本框(变量名为inputvar)、按钮)、按钮“SEND TO JAVASCRIPT”及静态文本框,如图所示。及静态文本框,如图所示。融智技术学院融智技术学院14.4 本章小结本章小结 本章主要介绍了本章主要介绍了JavaScript与插件通信的方法,包与插件通信的方法,包括主流浏览器插件及其主要功能、插件检测、括主流浏览器插件及其主要功能、插件检测、JavaScript脚本与脚本与Java Applet的交互以及的交互以及JavaScript脚本与脚本与Flash动动画的交互等内容,并通过概括性较强的实例引导读者进一画的交互等内容,并通过概括性较强的实例引导读者进一步深入了解其具体用法。步深入了解其具体用法。