JavaScript在Web浏览器中(一)

TAG:JavaScript在Web浏览器中(一)


 Window对象是客户端JavaScript的全局对象,它定义了大量的属性和方法,提供给客户对Web浏览器的窗口进行操作。它还定义了引用其他重要对象的属性(如引用Document对象的document属性)。此外Window对象还包括两个自我引用的属性:window和self,可以使用它们来直接引用Windwo对象。
  在客户端JavaScript中Window对象作为全局对象,所以全局变量都被定义为它的属性。如,以下声明功能相同:
     var num = 20;  //声明并初始化一个全局变量
     window.num = 20; //创建Window对象的一个新属性
  Window对象代表的是一个Web浏览器窗口或窗口中的一个框架。对于多框架或多窗口的JavaScript应用,每个窗口和框架都对于一个Window对象,且都为客户端JavaScript代码定义了一个唯一的执行环境(也就是说,各个窗口或框架中的全局变量并不是其他窗口或框架中的全局变量),但他们之间可以互相存取。 

  我们还可以通过Window对象的document属性引用与这个窗口关联在一起的Document对象;location属性引用与该窗口关联在一起的Location对象。Window对象还包括一个frames[]数组,引用代表原是窗口的框架的Window对象。因此,document代表的是当前窗口的Document对象,而frames[1].document引用的是当前窗口的第二个子框架的Document对象。

  在客户端JavaScript中,Window对象位于作用域链的头部的全局对象,其它所有客户端对象多是作为其它对象的属性来存取的。这样就形成了一个以Window对象为根的JavaScript对象层次链,通过这个链,可以向下访问到任何一个包含在链中的对象。如:
 parent.frames[0].document.forms[0].elements[3].options[2].text;
  大型的客户端对象层次的子树被称作文档对象模型(DOM),它已经成为标准化的进程焦点。

  我们有很多方法把客户端JavaScript代码嵌入HTML文档中:
  1. 放置在标记对<script>和</script>之间
  2. 放置在由<script>标记的src属性指定的外部文件中
  3. 放置在事件处理程序中,该事件处理程序由onclick或onmouseover这样的HTML属性指定
  4. 作为URL的主体,这个URL使用特殊的javascript协议

  <script>和</script>标记:
  在一个HTML文档中,可以包含任意多个<script>和</script>标记对,这些独立脚本的执行顺序是他们在HTML文档中出现的顺序,而且这些脚本是同一个JavaScript程序的组成部分,在一个脚本中定义的函数和变量适用于随后出现的同一个文件中的所有脚本。
  标记<script>使用一个可选的language属性来告诉Web浏览器编写的脚本是什么语言,如果Web浏览器不知道该语言,脚本将被忽略。如果省略language属性,Netscpace和Internet Explorer都会假定脚本时JavaScript语言。
  HTML4后规范化的<script>标记,主张使用type属性,将脚本语言指定为MIME类型。而且,如果JavaScript作为一个文件中使用的唯一脚本,在<head>部分加入如下代码:
 <meta http equiv="Centent-Script-type" content="text/javascript">
  这样,就无需指定<script>的language和type属性了。
  我们在使用新版本如JavaScript1.5的新特性时,要避免在不支持这种语言版本的浏览器中产生语法错误,需要标注脚本版本。如:<script language="JavaScript1.5">
  需要注意的是,我们在使用脚本document.write()方法向窗口输出</script>字符串的时候,即使它出现在括号中,HTML解析器都会将它识别成当前脚本的结束标记,要避免这一情况,需要将标记拆成片断(如:"</"+"script>")或在其中使用转移符"/"(如"<//script>")。
  HTML解析器在遇到脚本时,会先执行脚本,待脚本执行完后,再继续解析后面的HTML文档。在HTML4种定义了<script>标记的defer性质,它可以暗示HTML解析器,在遇到脚本时,继续解析HTML文档,推迟执行脚本。defer性质常用来标示出不包含document.write()方法的脚本,提高浏览器性能。
     <sciprt defer>
         //不包含document.write()方法的脚本
     </script>

  包括JavaScript文件(.js):
  我们可以通过<script>标签的src属性的URL值,指定外部JavaScript文件。
  需要注意的是,如果<script>标签包含了src属性,浏览器会忽略<script>和</script>标记之间的代码。
  使用src性质可以将JavaScript代码与HTML代码分离,从而简化HTML文件;如果JavaScript函数被多个页面共享,可以将它们放置在单独JavaScript文件中,使浏览器将其缓存起来,这样可以提高装载速度;由于src的值可以是任意URL,因此来自一个Web服务器的JavaScript程序或网页可以使用由另一个Web服务器输出的代码(如子程序库)。

  事件处理程序:
  很多动态的程序都定义了事件处理程序,当某个事件发生时(如用户点击表单中的按钮),Web浏览器会自动调用相应的事件处理程序。由于客户端JavaScript事件是由HTML对象(如按钮)引发,因此事件处理程序被定义为这些对象的性质。比如按钮的onclick性质。onclick的性质值是一个字符串,可以包含一个或多个JavaScript语句。如果起哄有多条语句,必须使用分号隔开。(在以后的将会详细介绍事件处理程序)

  URL中的JavaScript
  另一种将JavaScript代码添加到客户端的方法是把它放置在协议说明符javascript:后的URL中。这个特殊的协议类型声明了URL的主体是任意的JavaScript代码,它由JavaScript的解释器运行。如果javascript:URL中的JavaScript代码包含多条语句,须用分号分隔。
  通常我们想用javascript:URL执行某些不改变当前显示的文档的JavaScript代码。要做到这点须要确保URL中最后一条语句没有返回值,一种方法是用void运算符显式地把返回值指定为undefined(在javascript:URL语句结尾使用语句 void 0)。
  任何使用正规的URL的地方都可以使用javascript:URL。


你可能感兴趣的:(JavaScript,html,Web,浏览器,脚本,html解析器)