作者:牛海彬 页数:405 出版社:empty |
本书是一部优秀的、注重实践的Java Seri pt教程, 作者首先概览了JavaScript。包括它的语法、良好的编码习惯、DOM编程原则等; 然后构建了JavaScript工具包, 包括动态操作标记、使用CSS和DOM修改页面风格、验证表单、处理图像等:接着通过一个完整的案例研究阐明了如何使用多种Java Ser pt技术协同工作:最后单独设计一章来讲述第三方示例, 演示了YU 1和j Query Java Seri pt库的使用·教材,本书适合初级和中级水平的JavaScript开发人员阅读, 可作为高等院校计算机专业的Java Seri pt课程北京市崇文区夕照寺街14号2008年4月第1版2008年4月河北第1次印刷ISBN 978-7-115-17168-9/TP反盗版热线:(010)67171154定价:55.00元读者服务热线:(010)88593802印装质量热线:(010)67129223
随着Ajax技术的兴起, JavaScript重新回到了大众的视野。Ajax是Asynchronous JavaScript andJava Seri pt是一种解释性的脚本语言, 它是网景公司于1996年发明的。当时把它嵌入到NetscapeJavaScript刚开始是作为一种脚本语言推出的, 因此人们往往错误地认为这种技术很简单, 其译完本书,我感觉作者真的很棒,他没有介绍一些华而不实的例子,而是从基础开始教你如本书第3章和第9章由屈晓光翻译,第7章由易继开翻译,感谢他们与我合作完成了本书,感谢人民邮电出版社图灵公司的傅志红编辑和谢工给予我的帮助和指导。感谢我的父母和许多朋友给予我的帮助和支持由于时间比较仓促,加上译者学识有限,译文中锈误疏滤在所难免,欢迎大家指正。我的电Chr tn Heilmann, publi hed by A press L.P, 2560NinthStrect, Suite 219, Berkeley, CA94710USA.Posts&Telecom Press.All rights reserved.以任何方式复制或抄袭本书内容。XML(异步Java Seri pt和XML) 的缩写, 使用它, 不刷新整个页面也可以和Web服务器交换数据,这样提高了传输效率,增强了用户体验,搜狐和新浪的博客系统就是比较典型的成功案例,Navigator(NN) 2.0浏览器中, 需要解释器来读取和执行添加到.html页面的Java Seri pt代码。随着因特网的发展, 现在几乎所有的浏览器都支持Java Seri pt, 也就是说有上亿台电脑安装了Java Seri pt的运行环境,这说明它有着广泛的用户群。实它是一种功能强大而且比较复杂的语言, 在企业级开发和Web开发中起着非常重要的作用。我做了多年的企业级开发和Web开发, 发现真正会用JavaScript的人并不多, 大部分人也只是复制和粘贴, 很少有人能写出自己的JavaScript应用, 我想这与大家对它的不重视可能有很大关系。何编写高质量的Java Seri pt代码。除此以外, 本书还包含了许多最新的JavaScript技术, 包括在Ajax、RSS以及其他Web 2.0技术中的应用, 它不只适合Java Seri pt的初学者, 而且适合希望对JavaScript技术有深入研究的人。本书还可作为计算机专业开设的Java Seri pt课程的教材。子邮件和博客地址分别是pleasechess@126.com和http//newhappy2008.blog.sohu.com, 欢迎大家来信或留言,把问题反馈给我。牛海彬2007年年底
序言
也许从来没有什么时候比现在学习JavaScript更令人兴奋的了。经历了多年的浏览器之争后,是什么原因导致它突然又备受关注呢?第一个原因完全是实践的结果:浏览器的改进最终使越来越多的人认识到, JavaScript不是一种玩具语言, 这进一步促进了人们对它的接受。尽管JavaScript开发所面临的挑战是非常巨大的。不断开发出来的功能强大的新应用程序可能会暴露许多隐藏多年的浏览器bug。这些应用程幸运的是, 应对这个挑战的全球Java Ser pt社区已经出现了, 大量的代码和资源都在等待着无作为这个社区中一名长期的导师和领导者, Chrt inn是通向这个复杂世界的理想引路人。本Java Seri pt终于成为Web开发人员必备的工具。不再只是广告和恶作剧的手段, 现在它已是下一代Web应用程序非常有价值的组成部分。得编写跨浏览器平台的JavaScript可行。第二个原因具有更多的革命性:Ajax作为一种使用新名称的老技术,使得客户端代码可以直接连接到服务器上而不用重新刷新整个页面.这种简单的功能使Web应用程序开发更开阔, 它启用了创新的界面, 并且戏剧性域改变着用户对网页界面行为表现的期湿。它还有许多不足之处,但是在其非常简单的外表之下有着许多现代语言中都没有的强大功能:闭包、原型继承以及对函数式编程风格的广泛支持,这样一种灵活的语言现在被安装到了数以亿计的计算机上,这是值得庆祝的。“只是因为你可以数”并不意味着就应该那样去做。并不是所有的浏览器都生而平等,可访问性(人和各种其他设备都可以访问) 仍然是Web开发非常重要的一个方面, 理解这些问题和有关渐进增强的技术都是JavaScript学习非常重要的一部分。浏览器经常会背高现有的标准规范,而且伪标准非常常见且经常无法避免,序本身就很复杂,维护大量的代码又会引起新的问题。畏的开发人员使用,但是这些财富隐藏的价值只有通过对潜在平台的一致理解才能发掘出来。本书将会为你提供这方面的知识。书还包含了许多只有通过多年的经验积累才能获得的智慧,Christ n会教你以一种高雅、可靠且优美的方式应用JavaScript, 这会使你的用户非常满意并且会给你的同事留下深刻的印象。如果你想从零开始学习JavaScript——它的含义、功能, 以及如何综合使用它和其他技术(如此外, 还有很多人为因素。JavaScript的坏名声, 开发人员和浏览器生产商的过错几乎要对半如果以前使用过JavaScript, 那么阅读本书时你要准备好接受一种新思想。如果你完全是刚刚现平秘退化不影响禁用了某些功能的用户的目的。也译为“不唐突的(或非干扰的) Java Seri pt”.——编者注Simon Willison著名Web开发人员Django框架开发者之一前CSS和HTML) , 那么你就选对书了。如果你已经对JavaScript有了一定的经验, 但还想了解一些在最新的知识, 那么你也选对了书——在最近几年里, JavaScript开发已经改变了许多。在20世纪90年代中后期, JavaScript第一次开始应用到Web开发的时候(在1996年首次被Netscape 2支持) , 它很快就遭遇了许多批评和抱怨, 这有很多原因——即使最好的时候, 浏览器的支持也很一般, 而最精的时候, 针对不同的浏览器(浏览器之争的主角是Netscape 4和IE 4) 需要以不同的方式实现各种不同的功能。这就导致开发人员如果想获得跨浏览器平台的支持,就不得不编写完全不同的网站版本,或者纵容杂乱的代码分叉。开。那时开发人员喜欢用JavaScript实现看上去很酷的特效, 但是引起了许多可用性和可访问性的问题(这就是所谓DHTML, 那时的一个流行词指的是使用JavaScript、CSS和HTML应用程序来产生动态效果) 。如果由于某种原因Java Seri pt不可用或者用户要使用屏幕阅读器, 那么网页就会完全失效。而且许多Web开发人员在不懂实际工作机理的情况下, 就把一些脚本复制并粘贴到自己的网站中,导致了更多说不清楚的可用性和代码维护的问题。正如我在前面所说,现在事情已经发生了改变,浏览器的支持性现在已处于可控级别,现代的浏览器大都使用DOM(文档对象模型) 和其他构造的相同实现, 而且现代技术也很大程度上都考虑了可访问性等。学完本书后, 你会发现像DOM脚本这样的现代技术也都是围绕着下面的假设来建立的:既要将结构(在标记文件中) 和表现(在CSS文件中) 分离, 也要分离Java Scr pt文件中的行为(而不是遍布在标记文档中) 。JavaScript并不是只能做恶, 它可以用来对网站编码,使用户体验更丰富, 而在JavaScript不可用的时候也不会完全失效, 这叫做分离式JavaScript(unobtrusive JavaScript) ——JavaScript增强应该被看作是那些能够使用它们的用户的一种额外好处,而不是运行一个网站所必需的特性,学JavaScript, 那么可以松一口气, 很幸运你没有刚说过的JavaScript早期开发的经历!①unobtusieJavaSeript是现代Java Seri pt编程的核心思想, 主要通过将Java Seri pt与表现层和结构层分离, 从面实
本书内容
JavaScript可能是在Web开发中被低估且被滥用最严重的语言, 但是如果正确使用, 它会是一最后, 第11章重点讲解现代JavaScript开发的另一个重要的方面——使用第三方Java Seri pt解本书所提供的所有代码例子都可以在网站http//www.beginingjavaseripcom下载和测试, 在第二, 在因特网的一些JavaScript论坛里求助, 其中比较好的有下列几个.口evolt的the list论坛:http/lists.evolt org/mailman/listinfo/the it.o Mozilla JavaScript论坛:http//developermozlla.org/en/docs/JavaScript。口JeremyKeth:http:/www.adactio.com,口SimonWilison:http//simon.incutio.com/.口WaSP DOM脚本编程任务组:http:/www.webstandards.org/actn/dst/.口StuartLangridge:http//kryogenix.org/days/.oRobertNyman:http:/robertnyman.com/。口JonSnook:http//www.snook.cajonathan/.种非常有价值的工具。在接下来的章节中, 我们会介绍JavaScript的基础和现代的JavaScript技术,包括用于动态行为和样式控制以及事件处理的DOM编程。接着, 我们会学习一些JavaScript最基础的应用,包括数据验证、图片和窗口操作,以及表单和导航菜单的动态增强,接下来, 我们把注意力转移到与Java Scr it相关的、可能是目前最热的一个词语—-Ajax。Ajax代表异步JavaScript与XML(Asynchronous JavaScript and XML) , 这有点儿名不符实, 因为这种技术不必包括XML, 而且可能经常和HTML一起使用。但是不要只关注这一点, 它主要指在网页上创建运行的动态功能,因为不用刷新整个页面,网页的各小部分就可以更新,例如,在线的邮件应用程序中的联系人信息(Gmail是我们最容易想到的例子) 。现在实现Ajax最常用的方式就是使用X NE HttpRequest(X HR) 对象。它非常流行, 因为它允许创建拥有丰富功能且其外观和运行方式都和桌面应用程序类似的Web应用程序。但是Ajax确实也带来了它自己的一系列问题, 这个也会在书中涉及。接下来是一个综合的案例研究, 它展示了一个成熟的含有现代JavaScript增强的Web应用程序。决方案。当你开发JavaScript应用程序的时候, 不需要每次都对所有的东西从头编码。和创建自己可复用的对象和函数一样(这个会在本书前面几章中讲到) , 在Web上还有许多第三方资源, 你可以下载并在自己的应用程序中使用。从函数库到成熟的API(应用编程接口) , 许多资源都可以供你使用。其中, 我们重点介绍了j Query、GoogleMaps API、Yahoo API等。社区和支持Java Seri pt是什么?你用它来做什么?询问拥有不同技术背景或面向设计的开发人员的时候,你很可能会得到完全不同的答案。本书会教你如何成为一个可以和所有这些开发人员一起工作的JavaScript开发人员, 而且通过使用JavaScript来增强网站、构造Web应用程序, 甚至不用强迫用户改变他的使用方式或者进行硬件设置就能扩展软件,使他们对你刮目相看那里你还会发现更多的信息、勘误以及其他例子(A press出版社在http//www.aprcss.com上也提供了勘误表和可下载的代码) 。但是遇到问题时该怎么办呢?你有3种选择。第一,可以通过网站(http:/wait-tilli.com)通知我或者把问题通过邮件发送到A press(详细的联系地址在http:/wwwapress.com上) 。①图灵网站为本书中文版提供了配套网页,有代码下载和勘误表以及其他资源。——编者注口Webdeveloper com Java Scr pt论坛:htp//www.webdevlopercom/onimfoundiplayphp?=3.口comp, ang.javascriptFAQ:http//ibbering.com/faq/。这些论坛经常有许多像你这样寻找问题答案的人光顾, 还有许多非常有经验的JavaScript高手,他们乐于帮助社区里的人解决问题。要确保你的问题经过了思考,不要只粘贴你的代码,然后就问“这里什么地方有错误?”。也可以看一下论坛里过去的帖子,或许你的问题其他的人已经问过并得到解答了,最后, 我还要感谢你, 因为购买本书说明有人真地想学习JavaScript, 而不只是复制和粘贴前言3最后一个, 阅读博客!许多天才的JavaScript高手喜欢通过博客和大家分享他们的思想、创新以及经验,其中包括我。这是获取新思想非常好的一种方式。我推荐你阅读下面的博客.你现在是一个非常活跃的社区的一份子了,除了可以学习许多有用的东西,你还会遇到各种各样有趣的人,而且这种学习方式会很快乐!让我们继续快乐地学习吧——不断地阅读……致谢感谢在完成本书的过程中所有帮助过我的人——Chris、Beth、Ami、Katie以及A press出版社的Charles和Jon Stephens.我学到了许多, 尤其是认识到了写书要做的工作比我想象的要多得多。还要感谢那些通过解决问题并询问更多功能而由此帮助我的人——WaSP DOM脚本编程任务组的成员Stuart Col ve、Matt Warden、Jens Gro chi dri、In go Chao、Volkan Oz clik以及许多在evolt列表、CSS讨论区和我的博客上留言的朋友。感谢以前在Ag ilisys的同事和现在在Yahoo的同事所做的测试和支持, 还要感谢Good forFood、Spence、Pizza deli que以及Belle Epoque饭店为我提供了食物, 让我可以保持健康的身体(还要感谢这些地方的邻居所提供的无线接入点)。脚本。
JavaScript入门本书主要讲添一种名为Jaa i的脚本语言以及如何在实际开发中使用它。在读完本书~之后,你就能够:口理解JavaScript的语法和结构。口创建容易理解和维护的脚本。口编写不与其他JavaScript冲突的脚本。口编写脚本, 使网站更加容易使用, 且不排斥未启用Java Seri pt的用户,口编写与浏览器或用户代理无关的脚本——也就是在未来许多年中它们仍然是有用的,不会依赖于过时的技术。口使用JavaScript增强网站, 允许没有任何编程知识的开发人员改变网站的界面外观。口使用JavaScript增强网站文档, 允许HTML开发人员通过给某个元素简单地添加一个CSS类来使用你开发的功能。口在用户代理允许的时候, 可以使用渐进增强来使Web文档变得更好。口使用Ajax架设客户端和服务器端之间的桥梁, 创建更易维护, 而且用户体验更加平滑流畅的网站,口将JavaScript作为Web方法的一部分, 使你能够独立地维护它而不与其他的开发流程冲突。在这里你不会发现:口如何创建华丽的但对访问者没有任何价值的特效的指导,口特定于某种浏览器的JavaScript应用。口只是为了证明它可以被使用但不能增强访问者体验的JavaScript代码,口强制“推销”垃圾内容的JavaScript脚本, 如弹出窗口或其他展示动画效果的华而不实的技术。我坚信JavaScript在现代的Web开发中占有重要的地位, 但我们无法保证访间者能够使用或体验用JavaScript所能达到的所有特效和功能。JavaScript允许通过添加、移除、显示或隐藏元素来完全地改变网页效果。我们可以提供丰富的界面,如拖放式的应用程序或是多层下拉菜单。但是,一些访问者并不能使用拖放式的界面,因为他们只能使用键盘或是依赖语音识别来访问我们的网站,还有一些用户可能是通过听而不是看(通过屏幕阅读器)来访问的,所以不能够察觉由
Java Seri pt带来的变化.不仅如此, 有的用户不能启用JavaScript功能, 如在银行等安全级别高的环境中。因此, 必须通过一些服务器端解决方案为我们用Java Seri pt实现的许多功能提供各用支持。遗憾的是, Java Seri pt也有一段被用于弹出强制信息的历史, 这些信息往往并不是用户所请求的(例如弹出窗口) , 对于这种行为, 我和许多专业Web设计人员感觉都很头疼。希望你不要使用从本书中获得的知识去做这样的事情。注解网页设计经过这些年的发展已经成熟——我们已经不再使用FONT标签, 而且一些可视化属性例如bgcolor也已被废弃了.我们推荐把所有的格式化和界面表现属性放到CSS文件中·发生在JavaScript上的演化过程同样是Web开发的一部分、我们已把内容、结构和表现分离开了, 现在是把网站的行为从其他层分离出来的时候了, Web开发现在主要考虑的是业务需求和用户体验,而不是把一些程序放到那里,然后痴心妄想它们能在大多数平台环境下都可以使用,现在是把Java Seri pt看作整个开发技术一部分的时候了, 这意味着我们开发Java Seri pt程序与其他的像HTML、CSS这样的技术不仅不冲突, 而且要和它们配合使用或弥补它们的不足。现在,我们看到出现了一种新的技术(或者至少是现有技术的一种新的使用方式) , 它叫Ajax。第8章将会讨论它。在20世纪90年代, Web开发得到了飞速发展, 现在创建静态或者大小固定的网站已经意义不大了,任何现代的网页设计都必须考虑未来的扩展需求。同样,它对每个人来说都应该是可访问的(这并不意味每个人都会得到相同的显示效果:例如,一个好的多列布局。可能在高分辨率的显示器上显示得很好却很难在手机或者PDA上使用) , 并且是可以国际化的。如今, 我们已经不可能一劳永逸, 做一个产品, 永远都好用。因为Web是与内容相关的, 且需要不断地变化, 所以如果不经常升级Web产品井允许其他数据源为其添加新数据或从中获取数据, 那么它很快就会过时。
介绍一下JavaScript的历史和渊源。
一些信息《比如表单上的一些计算和验证信息) 并不需要依靠服务器。JavaScript可以由访问Java Seri pt的前身是Live Seri pt, 但是网景公司后来把名字改成了JavaScript, 很可能是由于Java之于JavaScript就好比Car(汽车) 之于Carpet(地毯) .网景公司在1996年创造了JavaScript语言, 它包含在Net sea peN avg at or(NN) 2.0浏览器中,简介已经足够了——你拿这本书是来学习JavaScript的。在深入讲解它之前, 让我们先来快速本章主要介绍:口JavaScript是什么以及它的功用。口Java Seri pt的优缺点。口如何把Java Seri pt添加到一个Web文档中, JavaScript的基本语法。口面向对象编程(OOP) 与JavaScript的关系。口如何编写并运行一个简单的JavaScript程序。很有可能你已接触过JavaScript, 并且对JavaScript的含义及功用有了自己的想法, 所以我们先快速浏览一下这种语言的一些基础和用途, 如果你对JavaScript已经有一定的了解, 想简单了解一下更多新的特性和概念,可以直接跳到第3章,不用在这里占用太多的时间——不过如果你已经遗忘了一些知识点,复习一下也不会有坏处。1.1JavaScript产生的原因在Web发展的初期, 主要有HTML和公共网关接口(CGD。HTML定义了大部分的文本文档并指示用户代理(通常是网页浏览器)如何来显示。举个例子,标签cp>
之间的文字就变成一个段落, 在这个段落中可以使用标签chl/hl=米定义最主要的页面标题注意大多数开始标签,都会有对应的以开头的结束标签,HTML有个缺点, 即它的状态是固定不变的。如果想改变一些东西或者使用用户输入的数据,就需要向服务器做一个往返的请求, 使用动态技术(如ColdFusion、ASP、ASPNET、PHP或JSP)可以从表单或者参数中把信息发送到服务器,服务器然后完成计算、测试、数据库查找等。和这些技术相关联的应用程序服务器会写一个HTML文档来显示结果, 然后把处理的结果以HTML文档的形式返回到浏览器来供用户查看,这样做的问题在于任何时候只要有变化,以上整个过程都需要再重复一遍(并且重新加载网页),这样显得比较笨重缓慢,没有网络这个新媒介向我们承诺的那么美好。現在,人们已经普遍拥有了快速的因特网连接。但是显示一个页面仍然意味着重新加载,这是一个经常失败的缓慢过程(遇到过Error 404没有?) 。我们需要更加灵活的东西——要允许Web开发人员快速对用户给予反馈并且不用从服务器重新加载页面来改变HTML。可以想象一个表单, 只要有一个字段中产生了错误, 它都需要重新加载,如果能够不用重新从服务器加载页面,就能快速地获得错误提示,岂不是更方便实用?这正是JavaScript的用武之地,者电脑上的用户代理(通常是一个浏览器) 执行。我们把这叫作客户端代码(client-side code) .这样可以减少与服务器的交互成本并且使网站运行更快,这意味着JavaScript可以用于网页中, 被所有现代的浏览器所理解。但是, 不同的浏览器在实关于JavaScript最大的特点就是, 一旦学会了如何在浏览器编程中使用它, 你就可以把它应用最近许多大公司也提供了可用在网页中的Java Seri pt对象和方法组成的API(应用编程接口)另一个更好的特点就是, JavaScript比高级编程语言和服务器端编程语言更容易开发。它不需正如我在本章的开始提到的, Java Seri pt在过去的几年里已经成为Web开发的一个完整部分,术语用户代理(useragent) 和对其含义的缺乏理解同样也是个问题。通常, 用户代理是指一口辅助技术, 用来帮助用户克服它们的缺陷——如语音合成(tex-to-speech) 软件或者盲文显示器.口纯文本代理, 如Lynx。口支持Web的应用程序.口游戏控制台,口手机。①K on fubu lator已被Yahoo!收购, 并被更名为Yahoo l Widget Engine。——编者注现JavaScript的方式上是不同的, 尽管核心的JavaScript语言是一样的。不过, Java Scr pt可以被用户关闭掉,并且一些公司和机构从安全角度考虑要求他们的用户这样借。这个我们稍后(贯穿本书)会进一步讨论。到其他领域中, 微软的服务器(I IS) 使用JavaScript去做服务器端网页编程(ASP) , PDF文件现在也使用Java Seri pt, 甚至Wn dows的任务管理也可以使用Java Scr pt代码来自动运行。许多应用程序, 如Dreamweaver和Photoshop, 都可以使用Java S crt来编写脚本。操作系统上的许多插件, 如苹果公司的Dashboard或者Linux和I Windows平台上的Koa fabula to r , 甚至允许使用JavaScript编写小的帮助程序。GoogleMaps就是其中的一种。只需要使用几行代码就可以在你的网站中提供可缩放和可滚动的地图。要像Java和C++那样需要编译, 也不需要像Perl、PHP或Ruby语言那样运行在服务器上或需要在命令行执行。编写、执行、调试和应用JavaScript脚本所需的就是文本编辑器和浏览器, 而这两者在所有的操作系统中都提供。当然, 也有工具可以使你更加方便, 例如Mozila Venkman、MicrosoftScript Debugger和kjs cmd这样的Java Seri pt调试器。1.3JavaScript的问题和价值但它也经常被错误地使用。结果,它就落了一个不好的名声,导致这个结果的原因是某些严重影响用户的Java Seri pl特效, 如移动的页面元素和弹出窗口。这种情况你第一次看到印象会很深刻但很快就变成是“有了也不错”,在有些情况下,甚至变成“没有更好”。许多类似的效果都来自DHTML时代(详见第3章) ,个浏览器, 如微软的IE、Netscape、Mozilla(Moz) 、Firefox(Fx) 、Opera或Safri。但是浏览器不是Web上唯一的用户代理, 其他用户代理还包括:口个人数字助理(PDA) .口交互式的电视机顶盒。口搜索引擎和其他索引程序。口其他,这么多类用户代理(以及一些没有更新的旧的用户代理),它们使用了不同的技术手段,对并不是网站所有的访间者都能体验你所应用的JavaScript增强, 许多人都会出于安全的考虑关者的经验和能力如何.这也是网络根好的一个方面——每个人都可以参与.然而,这样会给JavaScript程序员带来意外的后果脚本语言的独立性对于网站是法律方面的要求, 在英国的数字歧视法(Digital Di seri mination然而, JavaScript既不是邪恶的也不是没用的, 它是一个优秀的工具, 可以帮助在你平滑流畅正如我提到的, JavaScript可能不是一直可用的, 但这并不意味着它根本不能用。只不过它不使用JavaScript有以下优点。服务器的通信量,就意味着节约了金钱。口自动修正小错误:举个例子, 如果你有一个数据库系统, 预期的日期格式是dd-mm-yy sy,用户输入的格式是dd/mm/y yoy, 一个智能的JavaScript脚本可以在提交表单前纠正这个错误。如果那是访问者唯一的错误,你可以给他一条错误信息,这样网站会显得好用得多。1.4 JavaScript不可靠为什么还要用5于JavaScript也是一个非常大的危险。闭JavaScript。JavaScript既可以用来做好事, 也可以用来做坏事。如果操作系统(如没有打补丁的Windows) 允许, 可以通过JavaScript来在某台计算机上安装病毒或木马, 或者读取用户的信息并把它发送到另一个服务器上,注解没有办法知道访问者在使用什么工具,他计算机的功能如何,再者,你永远不知道访问在大多情况下,你可能想要一种服务器端的替代方案。它可以测试用户代理是否支持所需要的功能,如果不支持,服务器会使用其替代方案。Act) 、美国法律的508条款和世界上其他地区的法律中都有定义。这意味着如果你开发的站点没有JavaScript就不能使用, 或你的JavaScript增强需要用户或用户代理在不低效运行的情况下具有一定的能力,那么你的客户就可以控告你歧视,的网站上冲浪的用户花费更少的时间。1.4JavaScript不可靠为什么还要用应该是用户交互的唯一方式。口服务器交互较少:可以在提交页面到服务器前对用户输入的内容进行验证。这样减少了口对访问者快速反馈:他们不用等待页面重新加载才可以看到是否忘了输入某些东西.
通过允许访问者不用重新加敲页面就可以改变用户界面或与用户界面进行交五,增强易用性:例如, 使用JavaScript收缩或展开页面的某部分或为访问者提供额外的选择。这里有个典型的例子,就是选择复选框来快速过滤,例如只显示某个机场的可到达目的地,不用你重新加载页面,然后等待结果。口增强交互性:可以创建界面,在用户鼠标滑过的时候或使用键盘激活它们的时候做出反应。这一点使用CSS和HTML也可以做到, 但是JavaScript为你提供了更多的支持和更宽的选择范围。口界面更丰富:如果用户允许, 可以使用JavaScript包含一些拖放式的模块和进度条一些原来只能出现在用户必须另外安装的胖客户程序(thick client application) 中, 例如Javaapplet或者像Flash这样的浏览器插件。口使环境轻量级:不用像Java applet或者Flash影片那样需要下载一个大文件, 脚本的文件大小是比较小的井且一旦被加载就会被缓存起来(保存在内存中) 。JavaScript还使用浏览器控件而不是它自己的用户界面(像Flash或Java applet) 来操作其功能。这样使用户操作起来更容易, 因为他们知道这些控件并且知道如何使用它们。流行的Flash和Macromedia Flex应用程序的确有流媒体的选项并且(因为基于矢量) 在视觉上是可调节的, JavaScript和HTML的控件是不可以这样的。但是, 它们需要安装插件。1.5网页中的JavaScript和基本语法把JavaScript应用到网页中是非常容易的, 只要使用这个脚本标签:对于老版本的浏览器, 或如果想使用严格型XHTML(HTML的最新版本) 代替过渡型XHTML, 你需要把这段代码加上注释, 确保用户代理不在网页中显示它或试着把它当作HTML标签来呈现。给代码加注释有2种不同的语法。对于HTML文档和过渡型XHTML, 使用标准的在严格型XHTML中, 需要使用CDATA注释语法来注释代码。然而, 最好不要在严格型XHTML文档中添加任何JavaScript, 而要把它放到自己的文档中, 详见第3章。从技术上讲, 在HTML文档的任何地方加入JavaScript都是可行的, 并且浏览器都会解释它。可是,在流行的脚本中,有许多理由说明为什么这样做非常糟糕。但是现在我们权且先在文档的主体中加入JavaScript示例。
的情况下才会显示的内容, 然而, noscript在XHTML和严格型HTML中已被质弃。如果创建的JavaScript是分离式的, 就没有必要使用它,JavaScript语法在进一步探讨之前, 我们先来讨论一下JavaScript基本语法:口//表示当前行的其他部分是注释而不是要执行的代码,所以解释器不会试图运行它。注释是一个把说明文字放到代码中的一个便捷方式,它可以提示我们这段代码打算做什么,或者帮助其他阅读这段代码的人理解代码是做什么的。口/*表示一个多行注释的开始。口/表示一个多行注释的结束。如果想阻止执行某段代码但是又不想永久地利除它,就可以使用多行注释。如果你对一个代码块有疑问,例如,你不能确定哪些行有问题,那么你可以每次注释掉它的一部分,从而分离出问题来。口大括号((和))用来表示一个代码块。它们确保大括号中间的所有行都被当作一个代码块来看待。当我们在讨论像if或for这样的结构语句和函数时, 你会看到有关大括号更多的应用。口分号或换行定义了语句的结束,语句就是一个单行命令,在实际应用中,分号是可选的。但是在语句结束的时候,可以使用它们来使代码更清晰、更有条理,因为这样做可以使代码更容易阅读和调试(尽管你可以把许多语句放到一行中,但是最好还是把它们分别放到独立的行中以使代码更容易阅读)。
第1章JavaScript入门
1.1 JavaScript产生的原因…....
1.2 JavaScript是什么.…........
1.3 JavaScript的问题和价值…-
3.1.1对象检测与浏览器依性的
3.1.2潮进增强…......-..........
3.3.1命名习惯…
3.3.2代码布局……
3.3.5使用三元运算符简化代码..…-66
..3.3.6函数的分类和复用.....
3.3.8使用对象字面量保证脚本安全…68
老的方式…
4.4.1从父节点到子节点---….-...-.....
4.4.2从子节点到父节点.…--..-.
4.4.3兄弟节点之.......
4.6.1避免NOSCRIPT...................94
4.6.2通过innerHTML简化脚本….....96.
4.6.4DOM help:我们自己的
7.2.5表单与JavaScript小结………-246
8.3.1使用JSON代替XML...........-259
8.3关于缓慢链接的X HR问题....--264
8.3.5可选的动态Ajax菜单..…-
JavaScript验证…
9.5.2通配符搜索、约来范围
9.5.3使用量词约束字符的数量…295
9.5.4词界,空台字符以及其他
9.5.5使用正則表达式的方法……
9.5.6固括号分组的功能.…...
9.5.7正则表达式资源……
比较…-
辅助画数床…
7.2.4定制表单元素......
8.2高速缓存竟带来了麻烦-.....
8.3.2使用服务器端脚本来访问
8.3.4一个更大的Ajax示例:
9.3全能验证的神话......
9.4.1字符串验证方法
9.4.2数字验证方法…
9.5.1语法和属性……
3.2Javn Script和可访问性..
3.3良好的编码实践.......
3.3.3注释….
3.3.4函数…
3.3.7变量和函数作用域…
3.4小结----
第4章HTML与JavaScript....
4.1HTML文档剖析.......
1.4 JavaScript不可靠为什么还要用..............5
1.5网页中的JavaScript和基本语法..............6
2.1.1字符事数据类型.............-16
2.1.2运算符….....18
5.1通过JavaScript改变表现层.................--103
5.2通过事件处理改变文档的行为-…-------129
1.5.1 JavaScript语法-…
1.5.2执行代码…
1.5.3函数…
1.6对象…
1.7简单的JavaScript示...............
1.8小结…
第2章数据和判定--
2.数据、数据类型和数据运算符.…......
2.2复合数据类型:数组和对象……..
2.3在Java Seri pt中进行判定.....................39
.-..................-.64
2.1.3 JavaScript变量…............................20
2.1.4不同数据类型的转换..------22
2.2.1 JavaScript提供的对象:String、
2.2.2数组..............-33
2.3.1逻辑运算符和比较运算.............39
2.3.2条件语句….......41
2.3.3测试多个值:switch语...............44
2.3.4重复事件:循环….45
2.4小结….50
第3章从DHTML到DOM编程-......51
3.1作为“行为层 的Jav uS cr...............--53
第5章表现与行为(CSS与事件处理.-103
42在网页中使用Java Seri pt提供反馈信息:
4.3通过DOM访问文档..........
4.4元素的子节点、父节点、兄弟节点和值一83
4.5修改元素属性……...90
4.6创建、移除和替换元素.……...............-.91
4.6.3DOM小结:你的备忘单……...97
4.7小结...........-102
7.3小结…246
第8章与Ajax后端交....-247
8.1Ajax到底是什么248
8.3把X放回到A jux里面-...255
8.4小结…
第9章数据验证技术
9.1客户端JavaScript验证的优点和缺点…282
9.2使用JavaScript保护文件内容.….........283
9.4使用字符串和数字方法的基本
9.5正则表达式--
9.6验证方法小结-..-....
9.7表单验证技术…
5.2.1W3C标准兼容的事件……
5.2.2修正事件以适应W3C
.2.3来不停止优化..
图片和窗口…
6.1.1图片编程基础…
6.1.2预载图片…
6.1.3翻转效果…
6.1.4幻灯片显示….
不兼容浏览器…
导航与表单...
独立元素…
5.2.4页面加载问题及其解决方案…145
5.2.5读取和过滤健盘输入.........-..-146
5.2.6事件处理的危险…..150
5.3小结…….151
第6章JavaScript的常用对象:
6.1图片与Java Seri pt…--152
6.2窗口与JavaScript.......................177
6.1.5图片与JavaScript小结........176
6.2.1亥口属性......--.178
6.2.2窗口方法--------179
6.2.3窗口与JavaScript小结.…---------198
6.3小结…199
第7章JavaScript与用户的交互;
7.1导航与JavaScript--.----200
7.表单与Java Scrip..........................226
7.1.1重断加最间页的恐惧…-200
7.1.2 JavaScript导航基础…...........201
7.1.3览器导航i..........................203
7.1.4页内导航.…..........204
7.1.5网站导航.........................-212
7.1.6分页…............219
7.1.7使用JavaScript进行导航小结…226
7.2.1 JavaScript表单基础..---.---227
7.2.2表单元...........----228
7.2.3交互式表单:隐藏或至示
9.7.1指定强制宇段.…..............
9.7.2隐藏宇段方法........
9.7.3指示元素方法..................
10.7从文件夹中创建图片数.................--333
10.8小结…---------...340
第11章使用第三方Java Scr pt-…341
11.1网络为你提供了什么.........341
11.2代码片段、RSS提要、各种API
1L 3使用简短精练的函数库:jQ ucr........ 344
11.4使用API:用GoogleMaps为你的
115完整的服务:雅虎开发人员网络
9.7.6这些方法的缺点…............302
9.7.7共用验证规则…..................302
9.8.1显示错误半段的列表............-304
9.8.2使用可单击的错误消息
9.8.3单独地突出显示锈误的字段…--310
9.8为用户反馈验证信息....................304
9.8.4即时验证反馈….-313
9.9其他的动态验证方法……-314
9.10小结…317
第10章现代的JavaScript案例研究:
10.1缩略图图库.................319
10.2缩略图图库是什么以及它应该
10.静态缩略图图库…-*320
10.4使用JavaScript模拟动态图库….......320
10.5显示标题…326
10.6动态的缩略图库..............-----330
以及函数库…
----342
11.2.1RSS提要和REST API-----342
112.2RESTAPI示例..--------344
网站添加地图...-351
以及YUI.......360
11.5.1使用YUI的弹性标题…361
11.5.2使用YUI的连接管理器和
11.5.3YUI小结…370
11.6小结-....371
附录A调试Java Scrip........372
代替主表单....
动态图库
做什么-
第1章
客器组件代替弹出恼口........366