第一章
- JavaScript包括ECMAScript,DOM,BOM。ECMAScript是脚本语言标准,DOM是文档对象模型,BOM是浏览器对象模型
- ECMAScript(ECMA-262定义的语言)实现的宿主环境包括:Web浏览器,Node.js,Adobe Flash。宿主环境提供ECMAScript的基准实现和环境自身交互必需的扩展。扩展(比如DOM)使用ECMAScript核心类型和语法,提供特定于环境的额外功能。
- ES6:ECMA-262第六版:支持类,模块,迭代器,生成器,箭头函数,期约,反射,代理和众多新的数据类型,除Netscape支持ES3,其他浏览器都支持ES6。
- DOM:文档对象模型,是一个应用编程接口(API),用于在HTML中使用扩展的XML。比如简单的HTMl界面。DOM将整个页面抽象成一组分层节点。
- BOM:浏览器对象模型(API),用于支持访问和操作浏览器的窗口。
- JavaScript是一门用来与网页交互的脚本语言。 (1). ECMAScript:由ECMA-262定义并提供核心功能。 (2). 文档对象模型(DOM):提供与网页交互的方法和接口。 (3). 浏览器对象模型(BOM):提供与浏览器交互的方法与接口。
第二章
2.1
8个属性:~ async:表示应该立即开始下载脚本,但不能阻止其他页面动作。(只对外部脚本文件有效)
~ charset:忽略
~ crossorigin:配置相关请求的CORS(跨源资源共享)设置。默认不使用CORS。
(1)crossorigin=“anonymous” 配置文件请求不必设置凭据标志 (2)crossorigin=“use-credentials”设置凭据标志
~ defer:表示在文档解析和显示完成后再执行脚本是没有问题的。(只对外部脚本有效)
~ integrity:允许比对接收到的资源和指定的加密签名以验证子资源完整性(SRI),可以确保内容分发网络(CDN)不会提供恶意内容。
~ src:表示包含要执行的代码的外部文件。
~ type(MIME类型):type="text/javascript",如果这个值是module,则代码会被当成ES6模块,而且只有这时候代码中才能出现import和export关键字。
- 包含在
<script>内的代码会被从上到下解释。js代码中不能出现</script>,避免它,需要“\”转义字符转义<\/script> - src属性可以是一个完整的URl,而且这个URl指向的资源可以跟包含它的HTML页面不在同一个域中。发送GET请求,但受父页面HTTP/HTTPS协议的限制。在包含外部域的js文件时,要确保该域是自己所有的,或者该域是一个可信的来源(integrity属性可以防范)
- defer属性:在页面解析完之后再执行,但最好还是放在底部。写法,HTML:defer,XHTML:defer="defer"。顺序执行,在DOMContentLoaded事件之前执行。
- async属性:同defer,但不保证顺序执行。目的:高速浏览器,不必等待脚本下载和执行完成后再加载页面,同样也不必等到该异步脚本下载和执行后再加载其他脚本。异步脚本保证会在页面的load事件前执行(但可能在DOMContentLoaded之前或之后)。写法,HTML:async,XHTML:async="async"。
- 动态加载脚本,同步加载代码:
let script=document.createElement('script');
script.src='gibberish.js';
script.async=false;
document.head.appendChild(script);
,以这种方式获取的资源对浏览器预加载是不可见的。要想让预加载器知道这些动态请求文件的存在,可以在文档头部显示声明他们<link rel="preload" href="gibberish.js">。
- XHTML中的变化, 可扩展超文本标记语言(XHTML)是将HTML作为XML的应用重新包装的结果。在XHTML中,“
<”是一个标签的的开始,为避免这一情况,有两种方法:(1)("<")换成(<),(2)把所有代码都包含到一个CDATA块中,并用"//"注释。
<script type="text/javascript">
//<[CDATA[
中间是代码语句……
……………………………………
//]]>
</script>
2.2推荐外部文件:可维护性,缓存,适应未来
2.3文档模式, 标准模式包括标准模式和准标准模式,准标准模式由过渡性文档类型(Transitional)和框架集文档类型(Frameset)来触发
2.<noscript>元素:可以指定在浏览器不支持脚本时显示的内容