1.2. JavaScript是什么
J
avaScript
的前身是
LiveScript,
但是网景公司后来把名字改成了
JavaScript
,很可能是由于
Java
所带来的兴奋。这个名字经常会迷惑人,因为尽管
Java
与
JavaScript
有些语法比较相近,但它们之间并没有必然的联系。
Java
相对于
JavaScript
就好比汽车(
Car
)相对于地毯(
Carpet
)。
――
来自
Usenet
(一个世界性的新闻组网络系统)上的
JavaScript
讨论组
网景公司在
1996
年创造了
JavaScript
,它包含在
Netscape Navigator(NN) 2.0
浏览器中,用解释器来读取和执行添加到
.html
页面的
JavaScript
代码。从此,这种语言稳步增长变得越来越普及,现在大多数的浏览器都支持它。
好的消息是这意味着使用
JavaScript
的网页可以被所有主流的浏览器解析。另一个消息就不那么美好了,就是不同的浏览器在实现
JavaScript
的方式上有所不同,尽管
JavaScript
语言是一样的。但是,
JavaScript
可以被用户关闭掉――并且一些公司和机构从安全角度考虑也要求他们的用户这样做。这个我们会简短的作进一步的讨论,同样也是贯穿全书的。
关于
JavaScript
最大的特点就是你一旦学会了如何在浏览器编程中使用它,你就可以把它应用到其它领域中。微软的服务器
-IIS-
使用
JavaScript
去做服务端编程(
ASP
),
PDF
文件现在也使用
JavaScript
,甚至
Windows
的任务管理也可以使用
JavaScript
来自动运行。许多应用程序,如
Dreamweaver
和
Photoshop
,都是使用
JavaScript
来实现脚本化的。操作系统上的许多插件,如苹果公司的
Dashboard
或者
Linux
和
Windows
平台的
Konfabulator
,甚至允许你使用
JavaScript
编写小的帮助程序。
最近许多大公司也提供了你可以在自己网页中使用
JavaScript
对象和方法的
APIs
(应用程序编程接口),
Google
地图就是其中的一种。你只需要使用几行代码就可以在你的网站中提供可缩放和滚动的地图。
另一个更好的特点就是
JavaScript
比高级编程语言和服务端编程语言更容易开发。它不需要像
Java
和
C++
那样需要编译,也不需要像
Perl
,
PHP
或
Ruby
语言那样运行在服务器上或需要在命令行执行。所有你需要做的就是使用文本编辑器和浏览器来编写,执行,调试和应用
JavaScript
脚本,而这两个在所有的操作系统中都是已提供的。当然,也有工具可以使你做这些更加方便,例如就有
Mozilla Venkman
,
Microsoft Script Debugger,
和
kjscmd JavaScript
这样的调试器。
1.3. JavaScript的问题和法律权利
就如我在这一章的开始提到的,
JavaScript
在过去的几年里已经成了
web
开发的一个完整部分,但它也被用作不正当的用途。结果,它就落了一个不好的名声。导致这个结果的原因是蛮横的
JavaScript
特效,如移动页面元素和弹出窗口。这种情况你也许印象比较深刻,第一次你看到他们但很快就转变成另一个网页,甚至有的情况下弹出许多窗口,以至于你不希望再打开窗口了。许多类似的效果都来自
DHTML
(
在第三章中有更多介绍
)
。
术语用户代理和对用户代理是什么的缺乏理解同样也是个问题。通常,用户代理是指一个浏览器,如微软的
Internet Explorer
(
MSIE
),
Netscape
,
Mozilla
(
Moz
),
Firefox
(
Fx
),
Opera
或
Safari
。但是浏览器不是
Web
上唯一的用户代理。其它的包括:
l
辅助技术,用来帮助用户克服它们的缺陷
―
如文本阅读软件或者盲人显示器
l
纯文字网页浏览器,像
Lynx
l
Web
激活的应用程序
l
游戏控制台
l
手机
/
蜂窝电话
l
掌上手机(
PDAs
)
l
交互式的电视机顶盒
l
搜索引擎和其它检索程序
l
更多其他的
这么多类用户代理,使用了不同的技术手段(一些旧的用户代理没有更新),对于
JavaScript
也是一个非常大的危险。
并不是你网站所有的访问者都能体验你应用的特效,许多人都会出于安全的考虑把
JavaScript
功能关闭。
JavaScript
既可以被用来做好事,也可以用来做坏事。如果操作系统(如没有打补丁的
Windows
)允许,你可以通过
JavaScript
来在一台电脑上安装病毒或木马或者读取用户的信息,然后发到另一个服务器上。
注解:
没有办法知道访问者在使用什么工具或者它的电脑的功能。再者,你永远不知道访问者的经验和能力如何。这也是网络很好的一个方面---每个人都可以参与。然后,这样会给JavaScript程序员带来意外的结果。
在大多情况下,你可能想要一种服务端的替代方案。它可以测试用户代理是否支持需要的功能,如果不支持,服务器会使用其替代方案。
独立的脚本语言对于网站是个法定的要求,在英联邦的数字歧视法,美国法律的
508
节和世界上其它的地区法律中都有定义。这意味着如果你开发的站点没有
JavaScript
就不能使用,或你的
JavaScript
特效需要用户具有一定的能力或者他们的用户代理没有起作用,你的客户就可以控告你歧视。
然而,
JavaScript
既不是邪恶的也不是没用的,它是一个伟大的工具,可以帮助在你网站上冲浪的用户,感觉更加平滑流畅和花费更少的时间。