【js学习1】JavaScript实现&JavaScript插入

来源:互联网 发布:网络直播用户规模 编辑:程序博客网 时间:2024/06/01 10:16

目录(?)[-]

  1. JavaScript实现
    1. ECMAScript
    2. DOM
    3. BOM
  2. JavaScript插入
    1. script标签
    2. 插入位置
    3. noscript标签

JavaScript实现

javascript与ECMAScript是不同的,一个完整的javascript应该由三部分组成:

  • 核心(ECMAScrpit)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

ECMAScript

ECMAScript是JavaScript的核心,但它并不依赖JS或浏览器而存在。JS实现了ECMAScript,Adobe Flash也实现了ECMAScript。浏览器是ECMAScript的众多宿主环境之一,Node,Flash都是他的宿主环境。宿主环境不仅实现了ECMAScript,还提供了相应功能的拓展。比如JS就提供了DOM。 
现在ECMAScript已经发展到了7,要继续学习~~~

DOM

最初的DOM1级由两个部分组成:DOM Core和DOM HTML。DOM Core规定了如何映射基于XML的文档结构,以便简化对文档中任意部分的访问操作。DOM HTML则增加了针对HTML的对象和方法。HTML是基于XML的标记语言。与XML不同的是,HTML的标签都是固定的,且同时担任着显示数据的任务。XML的数据标签是不定的,且不负责显示。还有些其他的语言也基于标记语言:SVG,MathML等。 
DOM2添加了一些新的模块:

  • DOM Views:定义了跟踪不同文档视图的接口
  • DOM Events:定义了事件和处理事件的接口(现在JS最重要的特点就基于此)
  • DOM Style:基于CSS为元素应用样式的接口
  • DOM Traversal and Range:定义了便利和操作文档树的接口 
    DOM3添加了新的模块:
  • DOM Load and Save:统一的加载和保存文档的方式
  • DOM Validation:验证文档 
    DOM3还对DOM Core做了拓展,支持XML 1.0

BOM

BOM只处理与浏览器有关的部分,包括一些扩展:弹出新窗口,窗口分辨率的等,JS中常用的window对象就是BOM的一部分。

JavaScript插入

script标签

我们通过script标签来将JS代码或文件插入HTML,它有这么几个有用的属性:

  • async:立即异步加载脚本文件,执行的顺序自然就不得而知了
  • defer:立即下载,但脚本延迟到文档被完全解析和显示后再执行,即遇到/html标签。需要注意的是,内部script标签不支持这个属性。在文档中有多个含有defer属性的script标签时,按理说应该是按照出现的先后顺序执行,且都先于DOMContentLoaded事件执行。但是事实并不总是这么理想。使用时要注意。
  • src:外部脚本地址
  • type:出于种种原因,大家还是使用text/javascript

插入位置

浏览器会按顺序依次解析执行script标签,在一个script中的标签解析玩之前是不会解析下一个的,这就令引用的顺序非常重要。一般所有的引用会放在head标签中,但是这会导致在所有script文件加载完之后才会开始显示body标签里的元素。现代Web应用的做法都是放在body结束之前。

noscript标签

这个标签中的元素会在浏览器不支持脚本或脚本被禁用时显示,可用于显示一个提示用的p标签之类的。其他情况下这里的元素被忽略。

0 0