JS高级程序设计第2章--精简版
前言:这次是二刷了,想暑假做一次完整的笔记,但用本子来写笔记的话太贵了,可能哪天还丢了。。所以还是博客好==
第二章:在HTML中使用JavaScript
2.1 <script>元素:
即在HTML页面插入JS的主要方法。HTML4.01定义了以下JS属性(主要):
- async :表示立即下载脚本(只对外部脚本文件有效),但不妨碍页面中的其他操作。
- defer : 表示脚本可以延迟到文档完全被解析和显示之后再执行(只对外部脚本文件有效)。
- src : 表示包含要执行代码的外部文件。
- type :表示编写代码使用的脚本语言的内容类型,如 type="text/javascript",但不写默认也为它。
使用<script>元素的方式:
- 页面嵌入JS代码: function.......
- 外部JS文件: src="example.js"
2. 1.1 <script>元素位置:
所有<script>元素都应放在页面的<head>元素里,意味着必须的等到全部JS代码都被下载、解析、执行完成以后才能开始呈现页面的内容(遇到<body>才开始呈现)。
!!!注意,在需要很多JS代码的页面里这样子会延迟页面的呈现,所以下载一般会把全部JS代码放在<body>页面内容的后面!
2.1.2 延迟脚本defer:(HTML4.01)
defer="defer" 这个属性只适用于外部脚本文件。推荐把延迟脚本放在页面底部!(在几个延迟脚本的情况下,可能可以按照先后顺序执行)
2.1.3 异步脚本aysnc:(HTML5)
直接写一个async,XHTML中要写async="async",这个属性只适用于外部脚本文件,不让页面等待脚本下载和执行,从而异步加载页面其他内容。(在几个延迟脚本的情况下,不可以保证按照先后顺序执行)
2.1.4 XHTML中的使用:
XHTML即可以站超文本标语语言,意思就是超级严格!!!用 type="application/xhtml+xml" 才会触发XHTML模式
例如使用HTML实体(<)代替小于号 < ,
但这样子是不是太麻烦?
所以我们可以在<script> 后加上<![CDATA[JS代码]]>来包含JS代码,这样子可以不用解析了。如果不需要这个CDATA,那就在<![CDATA[JS代码]]>的前后加上 // 就行了。
2.1.5 在不支持JS的浏览器中使用<script>元素会把JS代码内容全部显示在页面,所以我们可以把JS代码包含在一个HTML注释中,即
<script><!--
function sayHi () {
alert ("Hi");
}
//--></script>
2.2 嵌入JS方式的选择:
最好还是使用外部文件,优点是:
- 可维护性
- 可缓存:几个页面需要使用同一个文件,那这个文件只需下载一次~
- 适应未来:即XHTML和HTML包含外部文件的语法都是相同的。
2.3 文档模式(很重要!面试经常有)
通过使用文档类型(doctype)切换实现。主要有两种文档模式:(模式主要影响CSS内容的呈现和可能影响到JS的解释执行),还有一个准标准模式,我暂不讨论。
- 混杂模式:忽略DTD声明,浏览器用自己的方式解析代码。以一种先后兼容的方式显示,会让IE的行为与IE5相同,IE5包含非标准特性,以防止老站点无法工作。
- 标准模式:DTD声明定义了标准文档的类型后,浏览器按W3C标准解析执行代码。让IE的行为更接近标准行为,IE6及以上都支持标准模式。
混杂模式写法: 不想写,因为本来就不推荐这种模式!!!
标准模式写法:
- HTML 5 :<!DOCTYPE html>
- HTML 4.01 严格型: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
XHTML 1.0 严格型: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2.4 <noscript>元素:
使用这个元素可以产生以下两种效果:(可以在脚本无效的情况下向用户显示一套消息~)
- 在浏览器不支持脚本的情况下会显示<noscript>元素中的内容。
- 在浏览器支持脚本但被禁用的情况下会显示<noscript>元素中的内容。
JS高级程序设计第2章--精简版的更多相关文章
- JS高级程序设计第4章--精简版
前言:纯手打!!!按照自己思路重写!!!这次是二刷了,想暑假做一次完整的笔记,但用本子来写笔记的话太贵了,可能哪天还丢了..所以还是博客好== 第四章:变量.作用域和内存问题 4.1 基本类型和引用类 ...
- JS高级程序设计第3章--精简版
前言:纯手打!!!按照自己思路重写!!!这次是二刷了,想暑假做一次完整的笔记,但用本子来写笔记的话太贵了,可能哪天还丢了..所以还是博客好== 第三章:基本概念(语法.数据类型.流控制语句.函数) 3 ...
- js 高级程序设计 第三章学习笔记——Number数据类型需要注意的事项
1.浮点数值 虽然小数点前面可以没有整数,但是并不推荐这种写法. 由于保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript会不失时机地将浮点数值转化为整数数值.显然,如果小数点后面没 ...
- 读书笔记 - js高级程序设计 - 第五章 引用类型
引用类型 和 类 不是一个概念 用typeof来检测属性是否存在 typeof args.name == "string" 需要实验 访问属性的方法 .号和[] 一般情况下要 ...
- JS高级程序设计第3章读书笔记
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js 高级程序设计 第四章学习笔记
问题:怎么才能形象的理解堆栈空间? 1. 声明变量 使用 var 声明的变量会自动被添加到最接近的环境中.在函数内部,最接近的环境就是函数的局部 环境:在 with 语句中,最接近的环境是函数环境.如 ...
- 读书笔记 - js高级程序设计 - 第十一章 DOM扩展
对DOM的两个主要的扩展 Selectors API HTML5 Element Traversal 元素遍历规范 querySelector var body = document.query ...
- 读书笔记 - js高级程序设计 - 第七章 函数表达式
闭包 有权访问另一个函数作用域中的变量的函数 匿名函数 函数没有名字 少用闭包 由于闭包会携带包含它的函数的作用域,因此会比其它函数占用更多的内存.过度使用闭包可能会导致内存占用过多,我们建议读者 ...
- 读书笔记 - js高级程序设计 - 第六章 面向对象的程序设计
EcmaScript有两种属性 数据属性 和 访问器属性 数据属性有4个特性 Configurable Enumerable Writable Value 前三个值的默认值都为false ...
随机推荐
- Parse陨落,开发者服务今后路在何方?
Parse为开发者提供移动应用的后台服务,包括数据存储.消息推送及用户管理等等.因此方便开发者可专心在客户端的制作,简化服务器端的设计. 关于 Parse 关停 2016年1月28日,Parse 官方 ...
- WPF自定义控件 使用阿里巴巴图标
原文:WPF自定义控件 使用阿里巴巴图标 上一篇介绍了 WPF自定义控件 按钮 的初步使用,在进一步介绍WPF自定义控件 按钮之前,先介绍一下如何在WPF项目中使用阿里巴巴图标,方便以后做示例. 1. ...
- WPF中任意Object的XAML代码格式化输出
原文:WPF中任意Object的XAML代码格式化输出 有时候,我们需要将WPF中的控件自身的XAML代码输出成文本,那么,我们可以使用System.Windows.Markup.XamlWriter ...
- Z-Order
The z-order of a window indicates the window's position in a stack of overlapping windows. This wind ...
- qmake 时复制文件(自动在编译前做一些操作,且写在.pro文件里)
有时在编译前需要准备一些文件,例如修改了 QtCreator 的编译输出目录: Build & Run > Default build directory,使用 Promote 后需要在 ...
- ArcGIS数据生产与精细化制图之中国年降水量分布图的制作
原文:ArcGIS数据生产与精细化制图之中国年降水量分布图的制作 楼主按:在今年的Esri中国用户大会上,我听了几场关于ArcGIS用于制图方面的讲座,也在体验区与Esri中国的技术老师有一些交流.一 ...
- Android Contact 导入导出 vcf格式(不依赖第三方库)
Android sdk 支持vcf处理的(忘记最低哪个版本开始支持的了,可以查一查) 备注:此代码来自Stack Overflow(原地址找不到了,o(╥﹏╥)o) 1. 导出联系人为vcf格式 Co ...
- Android零基础入门第88节:Fragment显示和隐藏、绑定和解绑
在上一期我们学习了FragmentManager和FragmentTransaction的作用,并用案例学习了Fragment的添加.移除和替换,本期一起来学习Fragment显示和隐藏.绑定和解绑. ...
- DOTNET CORE DATETIME在LINUX与WINDOWS时间不一致
.net core项目,部署到CentOS上的时候,发现DateTime.Now获取的时间与Windows不一致,主要是时区不一致. static void Main(string[] args) { ...
- Scintilla开源库使用指南
http://www.cnblogs.com/superanyi/archive/2011/04/07/2008636.html http://download.csdn.net/detail/den ...