——问:时常听到“动态HTML (Dynamic HTML)”这种说法,但我不明白它所指的是什么。我建议你在合适的机会讲讲动态HTML。
——答:首先我要讲的是,动态HTML作为浏览器自带的功能,实际上只是一种概念,它并不属于一种专门技术(如Javascript,Activex),它不是标签,不是Plug-in,也不是浏览器。 动态HTML(简称为DHTML)是近年来网络发展进程中最振奋人心也最具实用性的创新之一。它是一种通过各种技术的综合发展而得以实现的概念(当然,不同的浏览器,实现的程度也不同),这些技术包括Javascript, VBScript, DocumentObject Model(文件目标模块),Layers和Cascading StyleSheets(CSS)等。
那么,什么是动态HTML?简而言之,动态HTML就是一种即使在网页下载进浏览器以后仍然能够随时变换的HTML。比如,当鼠标移至文章段落中,段落能够变成蓝色,或者网页抬头能够滑过电脑屏幕。HTML中能够做的一切在网页下载后还能够再重复。
那么,下载之后的HTML如何进行变化?这就需要一些手段来指使浏览器完成这些变化,这就是我们要提到的构成DHTML的各种技术:
动态HTML是一种客户端的程序语言(Client-sideScripting Language)长期以来人们运用服务器端编写程序(尤其是Javascript和VBScript)来使HTML产生变化。当鼠标滑过一幅图象,这幅图产生变化时,那么这就是一个典型的动态HTML的例子。微软和Netscape的4.0版本的浏览器都具备了动态HTML编写语言,从而使得网页中更多的HTML功能元素(HTMLElements)得到发挥。这种将网页功能元素(或者文件目标)通过编写语言全面开放的机制被称为Document Object Model(DOM, 文件目标模块)。
动态HTML是文件目标模块(DOM)
在某种意义上,DOM是动态HTML的真正核心内容。正是它使得HTML具备了变动性。DOM体现的是网页元素的等级关系,这些元素在指定的时间在浏览器上呈现。DOM包括时空背景信息,如当前的日期、时间,包括浏览器自身属性,如浏览器的版本号,包括窗口自身属性,如网页的URL,最后还包括各HTML元素,如<p>标签,divs,或者表格。通过将DOM向动态HTML语言公开,浏览器能够使网页更多的功能元素发挥作用。如果象日期、时间之类的元素不能够自动变换的话,它也可以通过Scripts修改其他Elements来完成。
在IE4.0之前,也有一种DOM,不过,有了IE4.0之后,用于在浏览器上运行的任何一种程序语言,都能够发挥页面的HTML每一部分元素的功能。
(注:尽管Netscape的DOM较之IE的DOM有很多的局限性,不过你可以将网页中要变换的部分放置进分层容器(LayerContainer)里,再改变该层。Netscape声称在以后浏览器的新版本中,这种功能将完全支持W3C所定的DOM标准。)
DOM中指定元素进行变换的那部分称为Event Model(事件模块)。所谓的“事件”指的一系列对页面进行的动作,诸如将鼠标在一页面Element上移动(onmouseover),进行网页发布(onload),提交一个反馈表格(onsubmit),点击反馈表输入区(onfocus),等等。
动态HTML是串接样式表(Cascading StyleSheets,CSS) 由于CSS属于DOM的一部分,它的属性也可以通过动态HTML编写语言得到体现,因此能够实现页面外在视觉效果的几乎一切变化。通过改变页面元素的CSS属性(如颜色、位置、大小),你可以达到你机器的带宽和处理器运行速度允许范围内的一切效果。
综上所述,CSS是你进行网页改变的对象,DOM是其具有变动性的机制,而Client-side Scripting是实际促成变化的程序。这,就是动态HTML。