多媒体技术16JavaScript.doc_第1页
多媒体技术16JavaScript.doc_第2页
多媒体技术16JavaScript.doc_第3页
多媒体技术16JavaScript.doc_第4页
多媒体技术16JavaScript.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

27 第16章 JavaScript第16章 JavaScriptJavaScript(爪哇脚本)是一种嵌入HTML文档中的基于对象的Web客户端脚本语言,用于创建在线应用程序,以产生交互式动态网页。JavaScript的内容丰富,使用技巧也较多,但由于篇幅所限,本章只介绍一些JavaScript的最基本内容。16.1 概述JavaScript原来是Netscape公司发明的,后来被Microsoft仿造(JScript和VBScript),现在成为了欧洲和国际标准。JavaScript是一种被嵌入到HTML文档内部,并由浏览器负责执行的解释性编程语言。JavaScript可以在客户端完成多种任务,减少了网络和服务器的负担,并支持分布式计算和处理。16.1.1 历史与标准下面先介绍JavaScript及其变种JScript的历史,然后介绍对应的欧洲和国际标准。l 历史JavaScript是由Netscape公司的Brendan Eich发明的,最初叫Mocha和LiveScript。1995年Java出现后,引入了Java的部分设计理念,对LiveScript进行了改写,还增加了对Java Applet的支持,所以将其改名为JavaScript,并于1995年9月18日随Navigator 2.0正式版推出JavaScript 1.0。Netscape与Mozilla后来又陆续推出了JavaScript 的1.11.7版本,而2.0版目前还处在开发过程中。Microsoft公司也于1996年8月随IE 3.0推出了与JavaScript 1.0兼容的JScript,但在其后来的版本中又有它自己的若干扩充。JScript的版本有:1.05.6、.NET和8.0。l 标准1996年11月,网景公司与微软公司,分别将各自的脚本语言交给ECMA(European Computer Manufacturers Association,欧洲计算机制造商联合会)。ECMA于1997年6月公布了Web脚本语言标准ECMA-262(ECMAScript Language Specification,ECMA脚本语言规范)的第1版,它主要基于JavaScript 1.1。ECMA又将该标准提交给国际标准化组织ISO,经过少量修改后,1998年4月变成了国际标准:ISO/IEC 16262(Information technology - ECMAScript language specification,信息技术ECMA脚本语言规范)。ECMA于1998年6月推出了与16262国际标准完全兼容的第二版(2rd Edition):ECMA 262-2 ,1999年12月又推出了与JavaScript 1.5对应的第三版(3rd Edition):ECMA 262-3。ISO于2002年6月13日又推出了16262的第二版:ISO/IEC 16262:2002。IE、Netscape和Firefox 的新版本都支持这些欧洲和国际标准。与JavaScript 2.0版对应的ECMA 262的第4版,现在还处于开发过程中。随着XML的流行,ECMA对ECMAScript进行了扩展,添加了对纯XML的支持,于2004年6月推出了标准ECMA-357(ECMAScript for XML (E4X) Specification,针对XML的ECMA脚本规范),2005年12月又推出了它的第2版。2006年2月13日,ISO发布了与E4X对应的国际标准ISO/IEC 22537:2006(Information technology - ECMAScript for XML (E4X) specification,信息技术针对XML的ECMA脚本)。16.1.2 特点嵌入HTML文档中的JavaScript源代码,实际上是作为网页的一部分而存在的。需要支持JavaScript的浏览器来对网页内容进行分析、识别、解释,并执行JavaScript脚本。JavaScript为网页设计提供了极大的灵活性和控制手段,能将网页中的文本、图形、声音、动画等各种媒体形式捆绑成一个结合紧密的信息源。下面列出JavaScript的主要优缺点:l 优点n 在客户端完成动态交互和自动验证,减少了网络和服务器的负担(比较CGI);n 可方便地操纵各种浏览器对象,控制浏览器的外观、状态、甚至运行方式,可根据用户需要“定制”浏览器,使网页更加友好;n 可在客户端完成多种任务,而不需要网络和服务器的参与,从而可支持分布式计算和处理。l 缺点n 各种浏览器对JavaScript的支持程度不一样,JavaScript脚本的运行效果存在差异;n 为了保证Web的安全性,JavaScript牺牲了远程网页访问本地文件系统的功能。16.1.3 技术与使用下面先讨论JavaScript的技术特点,然后介绍JavaScript的使用方法,最后给出一个JavaScript脚本的简单例子。l 技术从技术上讲,JavaScript是一种解释性编程语言,其源程序(脚本)由浏览器内置的JavaScript解释器,动态处理成可执行代码。JavaScript脚本程序通常是事件(网页的某种状态或用户的某种操作和反馈)驱动的,每当浏览器探测到事件发生时,就会自动寻找对应的JavaScript函数来处理。与编译语言不同,JavaScript采用了动态绑定机制:在开始的语法分析阶段,总是忽略对函数与实例名称之引用的有效性检查;而只是在实际执行时,JavaScript解释器才去寻找每个遇到的引用所对应的实际函数或对象实例的地址。这给JavaScript带来了很大的灵活性。JavaScript函数需要在事件发生之前定义,对装卸文档时所调用的JavaScript函数,则必须在文档头中定义。定义JavaScript函数的方法为:function 函数名(参数表) 语句序列return 表达式;l 使用使用JavaScript的方法为:在HTML文档中支持内部事件属性组之元素的(开始)标签中,将函数作为事件响应属性的属性值来调用(注:即使没有输入参数,函数名后的圆括号也不能省略),即:事件响应属性= 函数名(参数表)。例如:l 例子下面是一个可以进行简单表达式计算的,含有JavaScript脚本的完整HTML文档例子。计算表达式function compute(form)with (Math) form.result.value = eval(form.expr.value);简单表达式计算输入表达式: 计算结果为:显示结果如图16-1所示。 (a) 四则运算(b) 函数调用图16-1 计算表达式的JavaScript例子16.2 基础语法除了数字不分整数与实数、变量没有类型、定义函数需要关键字function、新增了两个比较运算符和for-in循环语句等外,大多数JavaScript的基本语法都与C/C+/Java/C# 的相似。如JavaScript也区分字母的大小写,并采用自由书写格式。16.2.1 数据类型、常量与变量l 数据类型n 数字:不分整数与实数n 逻辑:true 或false(true1,false0)n 字符串: 或 n 未定义:undefinedn 对象:包括内置对象、浏览器对象、服务器对象和自定义对象等注意:无字符与指针等类型。l 常量n 数字(似C/C+/Java/C#)u 整数l 十进制数,如123l 十六进制数,如0xff或0XFFl 八进制数,如0123u 实数l 小数,如3.14l 科学表示法,如1e10或1E10n 非数字:NAN (Not A Number)n 布尔:true、false(区分大小写,不能用1、0代替)n 串:abcd 或 abcd,如 value=red。注意:JavaScript中的串常量不能跨行,解决办法是反复使用“变量+=子串;”来将它们连接在一起。n 转义字符(也似C/C+/Java/C#):b(退格)、f(换页)、n(换行)、r(回车)、t(跳格)、(单引号)、(双引号)等l 变量与需要先定义后使用、有严格类型限制、只有数字类型可以自动提升转换的C/C+/Java/ C# 变量不同,JavaScript的变量不需要预先定义、也无类型限制、而且在任意类型之间,都可以互相转换(以表达式最左项的类型为准),但是必须先赋值后使用。变量说明语法:var 变量名=初值,;。其中,n 关键字var可省(但在函数体内省略var后,可能表示引用的是已经在函数体外定义过的同名全局变量);n 似C/C+/Java/C#,变量名为字母或下划线开头的字母、数字、下划线串,长度不限,区分大小写,但不能与保留字同名;n 结尾处的分号可用白空符代替;n 没有被赋值的变量的值为undefined类型,直接使用则为语法错误;n 可让变量=null(数字=0、串=)使其有定义。例子:var s = 7, n = 2; / 用var定义变量并初始化,s为字符串,n为数字x = s + n / 无var,无分号,结果x为串72y = n + s / 结果y为整数9t = + n / 结果t为串2t = n.toString(10); / 结果t也为串2因为JavaScript是用于处理和生成HTML文档的,而HTML文档基于文本,全由字符串构成,所以在JavaScript中经常需要将数字转换为字符串,常用方法是:变量名 = (空串)+ 数字变量;或 变量名 = 数字变量.toString(基数) ;在JavaScript中,变量可以分成全局变量(位于函数体外的变量)和局部变量(在函数体内定义的变量)两类。例如:x = 3; / 全局变量xfunction f( ) / 自定义函数var x = 4; / x为局部变量,若省略var则x为全局变量y = 2 * x + Math.PI; / 调用函数f之后,全局变量x仍然=3/ 若在函数体中省略了变量x前的var,则全局变量x的值变为416.2.2 操作符与表达式JavaScript的操作符与表达式都与C/C+/Java/C# 的类似,但是也有若干不同之处。l 操作符似C,有代数(+ - * / % + -)、位(& | 填零右移)、逻辑(& | !)、比较(= != = =)、赋值(= += -= *= /= %= = = &= = |=)、条件(?:)等操作符。不同之处有:n 字符串用+进行连接、用+=进行连接赋值,如:x = my + name; / 结果x = mynamex += is John; / 结果x = myname is Johnn 在比较运算前,先进行自动类型转换,如:3 = 3(结果为true)3 != 3(结果为false)3 = 3.0(结果为true)n 解决办法新增加两个比较操作符:u =(三个等号):只有在两边类型一致,且值也相等时,才为true。u !=(一个感叹号两个等号):在类型不同、或类型相同但值不等时,都为true。n 其他操作符:u delete删除对象中的属性或数组中的元素;u typeof(表达式)返回表达式类型,可能的返回值有:number(数值类型)、string(串类型)、boolean(布尔类型)、object(对象类型)、function(函数类型)和undefined(未定义类型)。l 表达式n 条件表达式(似C):“(条件)? A : B”,如status = (age = 18) ? adult : minorn 赋值表达式(似C):“左值变量 赋值操作符 表达式;”,如x = y+1; x=y=0;16.2.3 语句除了新增的for-in遍历语句、指定默认对象的with语句、函数定义和变量声明语句等少数不同外,大多数JavaScript的语句都与C/C+/Java/C# 的类似。l 注释语句:/ 单行注释、/* 多行注释 */(C+)l 变量声明语句:var 变量名=初值,;l 赋值语句:左值变量 赋值操作符 表达式;(C)l 条件语句:if-else(C)l 分支语句:switch-case(break)(C)l 循环语句:for、for-in、while、do-while (break、continue)(C),与C语言的区别有:l break和continue后面可以带语句标号(Java)l 新增for-in语句:for (变量 in 对象或数组) (C# 的foreach)l 复合语句:语句序列l 函数定义语句:function 函数名(参数表) 语句序列return 表达式;与C语言的区别有:n 必须使用function关键字;n 函数无返回值类型;n 由return语句中的表达式决定返回值类型,若没有执行return语句,则返回undefined值。l 对象操作语句:(大多C+/Java/C#)n new构造对象实例,语法为:实例名 = new 对象名(参数); (注意:即使没有参数,括号也不能少,这点与C+/Java/C# 不同);n delete删除对象实例,语法为:delete 实例名;n this当前对象(但不是指针);n with指定默认对象(C+/Java/C# 无)u 语法:with (对象名) 语句序列u 说明:在其中的语句序列中,可以省写对象名及句点,而直接使用默认对象的属性和方法。如:若对象为Math,则PI*cos(x)相当于Math.PI*Math.cos(x)。16.3 对象JavaScript是一种基于对象而不是面向对象的编程语言:它可以操作浏览器、服务器和内置对象,也可以自己定义对象;但是它不支持类、继承和封装这三种面向对象编程语言的典型特征。16.3.1 基于对象JavaScript并不是一种功能完整的面向对象(object-oriented)语言,它不支持类、继承和封装,而只是一种基于对象(object-based)的语言。但还是可以用JavaScript来开发面向对象的程序,如JavaScript可以操作浏览器、服务器及网页文档中的各种对象,也可以自己定义对象类型,并产生若干实例。作为脚本语言的JavaScript,其目的只是提供对浏览器及服务器对象的灵活控制、从而快速方便地生成网页中的各种对象、并控制这些对象的行为,而不是一种完整的程序设计语言。对象包括数据和对数据的操作,在JavaScript中,称对象中的数据为属性(property,似Java,但在C+中叫数据成员或成员变量)、称操作数据的函数为方法(method,似Java和C#,但在C+中叫成员函数)。只不过JavaScript中,属性和方法并没有封装在对象中,而只是被关联在一起。16.3.2 对象分类在JavaScript中可以使用的对象有:l 浏览器对象由浏览器根据网页内容自动提供的对象,如窗口(window)、框架(frame)、文档(document)、表单(forms)等;l 内置对象JavaScript预定义的内部对象,如日期(Date)、数学(Math)、串(String)、数组(Array)等;l 服务器对象服务器上固有的对象,即LiveWire对象框架,包括请求(request)、客户机(client)、项目(project)和服务器(server);l 自定义对象用户按问题需要,自己定义的对象。16.3.3 自定义对象在JavaScript中,用户可以根据具体需要,创建新的对象(自定义对象)。但与C+/Java/C#等面向对象的编程语言(先定义类,并在类中定义属性和方法)有所不同,用JavaScript创建自定义对象的步骤为:1. 定义对象要用的各种函数;2. 定义与对象同名的构造函数,在里面定义对象的属性,并将它们初始化(this.属性名=初值;);再将已经定义好的函数在构造函数中注册为对象的方法(this.方法名=函数名;);JavaScript使用(自定义)对象的方法则与C+等的一样,用语句:new构造函数(参数);来创建该对象的实例。不过与C+等不同的是,在JavaScript中,对没有输入参数的(缺省)构造函数,表示函数调用的圆括号也不能少。一般将自定义对象的脚本保存为扩展名为js的文件,在需要时用HTML的脚本元素的src属性来引用。如:。下面以表格对象table为例,说明创建和使用自定义对象的过程与步骤:(1) 定义若干(用作对象方法的)函数:function setTableCellValue(row, col, value) this.datarow * this.columns + col = value;(2) 定义构造函数(定义对象的属性并注册对象的方法):function table(rows, columns) this.rows = rows; / 定义对象的属性,下同this.columms = columns;this.border = 0;this.data = new Array(rows*columns);this.header = new Array(colmns);this.setValue = setTableCellValue; / 将已定义的函数注册为对象的方法并将这些函数存为table.js文件。(3)创建对象实例:t = new table(3, 4);t.border = 2;t.setValue(0, 0, 张三);16.3.4 内置对象内置对象为JavaScript预定义的一些常用核心对象,包括:Array、Boolean、Date、Function、java、JavaArray、JavaClass、JavaObject、JavaPackage、Math、netscape、Number、Object、Packages、RegExp、String、sun。由于时间有限,下面只介绍String(串)、Math(数学)、Date(日期)、Array(数组)等四个对象,及一些JavaScript的顶层属性与方法。1. 串对象Stringl 创建实例对象:var 串对象变量名 = new String(初值串);。一般可以简写为:变量名 = 初值串;。如:str = value=; 几乎等价于var str = new String(value=);l 常用属性:n length(长度):串的字符数,如str.length为6。l 常用方法:n charAt(pos):返回串中指定位置pos处的字符,pos = 0 length-1。n indexOf(searchValue, fromIndex):返回串searchValue在对象串中从位置fromIndex开始的第一次出现的位置,若没有找到则返回-1。n lastIndexOf(searchValue, fromIndex):返回串searchValue在对象串中从位置fromIndex开始的最后一次出现的位置,若没有找到则返回-1。n substr(start, length):返回对象串中从位置start开始长度为length的子串。n substring(indexA, indexB):返回对象串中从位置indexA到indexB的子串。n toLowerCase():将对象串中的字母全转换为小写。n toUpperCase():将对象串中的字母全转换为大写。如:str.toUpperCase(); 则str变为VALUE=。n toString(radix):将数值转换为radix进制的数字串。如n.toString(16). toUpperCase()将数值变量n转换为大写字母的16进制数字串。l 外观格式方法:n big():大号,似HTML中的big元素。n blink():闪烁,似HTML中的blink元素(NS扩展,IE不支持)。n bold():粗体,似HTML中的b元素。n fixed():等宽,似HTML中的tt元素。n italics():斜体,似HTML中的i元素。n small():小号,似HTML中的small元素。n strike():删除,似HTML中的strike元素。n sub():下标,似HTML中的sub元素。n sup():上标,似HTML中的sup元素。l 链接方法:n anchor(nameAttribute):设置锚名,似HTML中带name属性的a元素。n link(hrefAttribute):设置链接,似HTML中带href属性的a元素。例子:(动态生成超链接)var linkText = Yahoo!公司;var url = /;document.write(这是一个指向+linkText.link(url)+的超链接!);表16-1 Math对象的属性(数学常量)显示为:这是一个指向Yahoo!公司的超链接!2. 数学对象Math名称属性符号近似值圆周率PI3.14159欧拉常数Ee2.718282的自然对数值LN2ln20.6931510的自然对数值LN10ln102.302582的平方根SQRT21.414212的平方根的倒数SQRT1_20.70711正无穷大POSITIVE_INFINITY负无穷大NEGATIVE_INFINITY-Math为静态对象,可以直接用对象名调用,如Math.PI * Math.sin(x),但不能被实例化。l 属性(数学常量),见表16-1。l 方法(数学函数),见表16-2。名称函数含义名称函数含义正弦sin(x)sinx幂pow(x,y)xy余弦cos(x)cosx开平方aqrt(x)正切tan(x)tgx上取整ceil(x)x的最小整数反正弦asin(x)sin-1x下取整floor(x)x的最大整数反余弦acos(x)cos-1x园整round(x)四舍五入反正切atan(x)tg-1x绝对值abs(x)|x|反正切atan2(y,x)tg-1(y/x)随机数random(x)0, 1指数exp(x)ex最小值min(x,y)x与y中的小者对数log(x)lnx最大值max(x,y)x与y中的大者表16-2 Math对象的方法(数学函数)3. 日期时间对象DateDate为动态对象,只有在实例化后才能使用(静态方法除外)。时间的测量都是从1970.1.1. 0:0:0UTC(Universal time coordinated,协调世界时)算起的毫秒数,Date对象的取值范围为-108108天(1天=86,400,000毫秒),相当于1970273,972年。下面分类给出Date对象的一些常用方法。l 构造方法:n new Date():构造包含当前时间的对象。n new Date(milliseconds):构造包含指定时间为milliseconds(从1970.1.1. 0:0:0算起的毫秒数)的对象n new Date(dateString):构造包含指定时间为dateString的对象。u dateString的格式为:月份 日期, 年份 时:分:秒;或(因特网GMT约定格式):星期, 日期 月份 年份 时:分:秒 GMT hhff时区。其中,括号中的时间可省(全设为0),没有写GMT(Greenwich Mean Time,格林尼治标准时间 = UTC)和时区的为当地时间。如:Aug 9, 1995、Dec 31, 2003 9:45、Jan 4, 3004 8Mon, 25 Dec 1995 13:30:00 GMT+0430u new Date(yr_num, mo_num, day_num, hr_num, min_num, sec_num, ms_num):构造包含由指定时间为yr_num年mo_num月day_num日hr_num时min_num分sec_num秒ms_num毫秒的对象。如:testTime = new Date(2004, 1, 14, 8, 30); / 2004年1月14日8时30分l 静态方法:(可以不创建实例,直接用Date对象引用)n Date.parse(dateString):将“年月日时分秒”格式的时间串dateString转换为(从1970.1.1. 0:0:0算起的)毫秒数。n Date.UTC(year, month, day, hrs, min, sec, ms):将指定时间转换为(从1970.1.1. 0:0:0算起的)毫秒数。l 获取方法:n getYear():获得对象时间中相对于1900年的年数(已是被反对的,应该被getFullYear方法代替),例如:Xmas = new Date(December 25, 2000 23:15:00)year = Xmas.getYear() / returns 100Xmas = new Date(December 25, 1800 23:15:00)year = Xmas.getYear() / returns -100n getFullYear():获得对象时间中的年份,如上两例分别得2000与1800。n getMonth():获得对象时间中的月份值-1,值范围:011。n getDate():获得对象时间中的日期,值范围:131。n getDay():获得对象时间中的星期值,值范围:06,对应于SunSat。n getHours():获得对象时间中的时值,值范围:023。n getMinutes():获得对象时间中的分值,值范围:059。n getSeconds():获得对象时间中的秒值,值范围:059。n getMilliseconds():获得对象时间中的毫秒值,值范围:0999。对应于获得Date对象中当地时间之完整年毫秒的方法get*,都有对应的获得世界时之完整年毫秒的方法getUTC*,如getUTCFullYear()、getUTCSeconds()等。n getTime():获得对象时间(从1970.1.1. 0:0:0算起的毫秒数)。n getTimezoneOffset():获得对象时间中以分钟计算的时区偏移值。n 例子:now = new Date(); / 获取当前时间exam = new Date(Jan 12, 2007);spring = new Date(Feb 18, 2007);msPerDay = 24 * 60 * 60 * 1000; / 一天的毫秒数examLeft = (exam.getTime() - now.getTime() / msPerDay;springLeft = (spring.getTime() - now.getTime() / msPerDay;document.write(离考试还剩不到 + Math.ceil(examLeft) + 天时间了!);document.write(离春节还剩不到 + Math.ceil(springLeft) + 天时间了!);l 设置方法:n setYear(yearValue):yearValue为相对于1900年的年数(已是被反对的,应该被setFullYear方法代替)。n setFullYear(yearValue, monthValue, dayValue)。n setMonth(monthValue, dayValue):monthValue=011,若11,则年+1、月%12。n setDate(dayValue):dayValue=131。n setHours(hoursValue, minutesValue, secondsValue, msValue):hoursValue=023。n setMinutes(minutesValue, secondsValue, msValue):minutesValue=059。n setMilliseconds(millisecondsValue):millisecondsValue=0999。n setTime(timevalue):timevalue为从1970.1.1. 0:0:0算起的毫秒数。与获取方法类似,对应于设置Date对象中当地时间之完整年毫秒的方法set*,都有对应的设置世界时之完整年毫秒的方法setUTC*,如setUTCFullYear、setUTCSeconds等。l 转换方法:n toString():将对象中的时间转换为对应的字符串,可以替代Object.toString(),会被JavaScript解释器在需要将Date对象转换为字符串时自动调用。格式为:星期 月份 日期 时:分:秒 UTChhff时区 年份如:Sun Dec 24 12:43:51 UTC+0800 2006n toGMTString():将对象中的时间转换为因特网GMT约定格式的字符串:星期, 日期 月份 年份 时:分:秒 UTC如:Sun, 24 Dec 2006 04:43:51 UTCn toUTCString():将对象中的时间转换为世界时约定格式的字符串,格式同上。n toLocaleString():将对象中的时间转换为当地时间格式的字符串,具体格式依赖于使用的平台,如:2006年12月24日 12:43:51 或:12/24/06 12:43:51。n toLocaleDateString():返回将对象中的时间转换为当地时间格式后的日期字符串,具体格式依赖于使用的平台,如:2006年12月24日 或:12/24/06。n toLocaleTimeString():返回将对象中的时间转换为当地时间格式后的时间字符串,具体格式依赖于使用的平台,如:12:43:51。4. 数组对象Array长度可伸缩(但元素总数不超过232 -1 = 4,294,967,295)的动态一维数组,索引从0开始。同一数组的元素可为不同数据类型,数组元素本身也可以是另一个数组(多维数组)。l 构造方法:n new Array(arrayLength)n new Array(element0, element1, ., elementN)n element0, element1, ., elementN例如:musicTypes = new Array(25);musicTypes0 = R&B;musicTypes1 = Blues;musicTypes2 = Jazz;musicTypes50 = 数来宝; / 会自动加长数组到51个元素又如:days = new Array(Sun, Mon, Tue, Wed, Thu, Fri, Sat);,等价于:days = Sun, Mon, Tue, Wed, Thu, Fri, Sat;因为JavaScript的变量可以是任意类型,所以数组的元素也可为不同数据类型,例如:myArray = new Array(Hello, myVar, 3.14159, true);l 多维数组:利用数组型元素,可以构造多维数组。而且各维的大小和类型都可以互不相同。如:a = new Array(1, 2, new Array(“one”, “two”);则:a0 = 1、a2= “one”, “two”、a21 = “two”。l 例子:(英文数字时钟,显示结果如图16-2,其中的时间域time会自动随时间每秒动态改变)图16-2 时间与数组例Digital Clockfunction date() days = new Array(Sun, Mon, Tue, Wed, Thu, Fri, Sat);monthes = new Array(Jan, Feb, Mar, Apr, May, Jun,Jul, Aug, Sep, Oct, Nov, Dec);now = new Date();year = now.getYear();month = now.getMonth();date = now.getDate();day = now.getDay();dateStr = monthesmonth + + date + , + year + ( + daysday + );document.clock.date.value = dateStr;function time() now = new Date();hours = now.getHours();minutes = now.getMinutes();seconds = now.getSeconds();timeStr = + hours;timeStr += (minutes 10) ? :0 : :) + minutes;timeStr += (seconds 10) ? :0 : :) + seconds;document.clock.time.value = timeStr;setInterval(time(), 1000); / 循环定时调用Date: Time: 5. 全局属性与方法除了上述内置对象之外,JavaScript还预定义了一些不属于任何对象(在ECMA标准中属于全局对象Global)的全局性内置属性和方法,可以在JavaScript脚本中直接使用。l 属性:Infinity(无穷大)、NaN(非数字)、undefined(未定义)l 常用方法:n eval(string):计算串string中所含表达式的值。n isFinite(number):number为有限数时返回true。n isNaN(testValue):testValue为非数字时返回true。n parseFloat(string):将串string解析成一个浮点数。n parseInt(string, radix):将串string解析成一个以radix为基数的整数。若无第二个输入参数,则将以0x开头的串解析成十六进制数、将以0开头的串解析成八进制数、将以其他开头的串解析成十进制数。16.3.5 浏览器对象JavaScript是一种嵌入在HTML文档中的脚本语言,而HTML文档又必须通过浏览器的窗口来观看。在浏览器装入网页文档时,会根据网页内容自动产生对应浏览器对象供JavaScript使用。浏览器对象有两类:(参见图16-3)l 导航器对象navigator:保存浏览器的名称、版本、插件和所支持MIME类型等信息。l 窗口对象window:对应于网页窗口,包括框架窗口对象frame、文档内容对象document、文档地址对象location和用于导航的网页历史记录对象history。图16-3 浏览器对象的层次结构1. 导航器对象navigatorl 属性:(IE与NS不同,下面是其中共同的)n platform:计算机平台,如Win32;n appCodeName:应用程序的代码名称,如Mozilla;n appName:应用程序的名称,如Netscape或Microsoft Internet Explorer;n appVersion: 应用程序的版本,如5.0 (Windows; zh-CN)或4.0 (compatible; MSIE 6.0; Windows NT 5.1);n language语言/systemLanguage系统语言/ userLanguage用户语言:如zh-CN 或zh-cn;n mimeTypes:浏览器支持的MIME类型数组,如object MimeTypeArray;n plugins:浏览器已经安装的插件数组,如object PluginArray;n userAgent:用户代理,如Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.0.1) Gecko/20020823 Netscape/7.0 或Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1);n cookieEnabled:是否允许曲奇,如true例子: 导航器对象 document.write(导航器对象navigator的属性);document.write();for (p in navigator) document.write( + p + : + navigatorp + );document.write();在IE 6.0和NS 8.0上的显示如图16-4。 图16-4 IE 6.0(左)和NS 8.0(右)中的导航器对象navigator的属性2. 窗口对象windowl 常见属性:name(本窗口的名称)、length(窗口中的框架数)、frames(框架数组,每个框架都有一个窗口对象)、document(窗口的文档对象)、location(当前文档的URL)、history(本窗口访问过的URL历史记录)、self(当前窗口对象)、parent(父窗口对象)、top(顶层窗口对象)、openner(打开本窗口的窗口对象)。l 常用方法:n open(URL, windowName, windowFeatures):创建一个新窗口,并装

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论