《Professional JavaScript for Web Developers》day02
《Professional JavaScript for Web Developers》day02
1.在HTML中使用JavaScript
1.1 <script>元素
HTML4.01为<script>定义了下列6个属性。
1)async:可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。
2)charset:可选。表示通过src属性指定的代码的字符集(大多数浏览器会忽略它的值,因此这个属性很少有人用。)
3)defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。
4)src:可选。表示包含要执行代码的外部文件。
5)language:已废弃。原来用于表示编写代码使用的脚本语言。
6)type:可选。可以看成是language的替代属性;表示编写代码使用的脚本语言的内容类型(即MIME类型)目前type属性的值依然还是text-JavaScript。不过,这个属性并不是必须的,如果没有指定这个属性,默认值仍是text-JavaScript
1.1.1 标签的位置
现代web应用程序一般都把全部JavaScript应用放在<body>元素中页面内容的后面,如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page</title>
</head>
<body>
<!-- 这里放内容 -->
<script type="text/javascript" src="example.js"></script>
</body>
</html>
这样,在解析包含的JavaScript代码之前,页面的内容将完全呈现在浏览器中。 而用户也会因为浏览器窗口显示空白页面的时间缩短而感到打开页面的速度加快了
1.1.2 延迟脚本
HTML4.01为<script>标签定义了defer属性。这个属性的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕再运行。因此,在<script>元素中设置defer属性,相当于告诉浏览器立即下载,但延迟执行。
<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page</title>
<script type="text/javascript" defer="defer" src="example.js"></script>
</head>
<body>
<!-- 这里放内容 -->
</body>
</html>
因为有些浏览器会忽略这个属性,因此把延迟脚本放在页面底部仍是最佳选择。
1.1.3 异步脚本
HMTL5为<script>元素定义了async属性。这个属性与defer类似,都用于改变处理脚本的行为。且只适用于外部脚本,并告诉浏览器立即下载文件。但与defer不同的是,标记为async的脚本并不保证按照指定他们的先后顺序执行。
<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page</title>
<script type="text/javascript" async src="example1.js"></script>
<script type="text/javascript" async src="example2.js"></script>
</head>
<body>
<!-- 这里放内容 -->
</body>
</html>
以上代码中,第二个脚本可能会在第一个脚本之前执行。因此,确保两者之间互不依赖非常重要。指定async的目的是不让页面等待两个脚本的下载和执行,从而异步加载页面的其他内容。为此,建议异步脚本不要在加载期间修改DOM
在XHTML中,要把async属性设置为 async = “async”
1.1.4 在XHMTL中的用法:略
1.1.5 不推荐使用的语法:略
1.2 文档模式
IE5.5引入了文档模式的概念,而这个概念是通过文档类型(doctype)切换实现的。
最初的两种文档模式是:混杂模式和标准模式。这两种模式主要影响CSS内容的呈现,但在某些情况下,也会影响JavaScript的解释执行。
在之后,IE又提出一种所谓的准标准模式。不标准的地方主要体现在处理图片间隙的时候(在表格中使用图片时,问题最明显)
如果在文档开始处没有发现文档类型声明,则所有浏览器都会默认开启混杂模式。但采用混杂模式不是什么值得推荐的做法,因为不同浏览器在这种模式下的行为差异非常大,如果不适用某些hack技术,跨浏览器的行为根本就没有一致性可言。
对标准模式,可以通过使用下面任何一种文档类型来开启:
<!-- 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 PUBILC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-strict.dtd">
<!-- HTML 5 -->
<!DOCTYPE hmtl>
而对于准标准模式,则可以通过使用过渡型或框架集型文档类型来触发,如下所示:
<!-- HTML 4.01 过渡型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//En" "http://www.w3.org/TR/html4/loose.dtd">
<!-- HTML 4.01 框架集型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<!-- XHTML 1.0 过渡型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitonal//EN" "http://www.w3.org/TR/xhtml1/DTD/Xhtml1-transitional.dtd">
<!-- XHTML 1.0 框架集型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/Xhtml1-frameset.dtd">
准标准模式与标准模式非常接近,它们的差异几乎可以忽略不计。因此,当有人提到“标准模式”时,有可能是指这两种模式中的任何一种。
1.3 <noscript>元素
早期浏览器都面临一个特殊的问题,即当浏览器不支持JavaScript时如何让页面平稳的退化。对这个问题最终解决方案就是创造一个<noscript>元素,用以在不支持JavaScript的浏览器中显示代替的内容。这个元素可以包换出现在文档<body>中的任何HMTL元素(<script>除外)包含在<noscript>元素中的内容只有在下列情况下才显示出来:
1)浏览器不支持脚本
2)浏览器支持脚本,但脚本被禁用。
符合上述任何一个条件,浏览器都会显示<noscript>中的内容。而在除此之外的其他情况下,浏览器不会呈现<noscript>中的内容
<html>
<head>
<title>Example HTML page</title>
<script type="text/javascript" defer="defer" src="example1.js"></script>
</head>
<body>
<noscript>
<p>本页面需要浏览器支持(启用)JavaScript。
</noscript>
<body>
</html>
《Professional JavaScript for Web Developers》day02的更多相关文章
- 《Professional JavaScript for Web Developers》day01
<professional JavaScript for Web Developers>day01 1.JavaScript简介 1.1JavaScript简史:略 1.2JavaScri ...
- 《Professional JavaScript for Web Developers》day03
<Professional JavaScript for Web Developers>day03 1.1ECMAScript语法 1.1.1 区分大小写 1.1.2 标识符 按照惯例,E ...
- Professional JavaScript for Web Developers 4th Edition
Professional JavaScript for Web Developers 4th Edition learning notes / 学习笔记 https://github.com/xgqf ...
- Professional JavaScript for Web Developers 3rd Edition ---读书笔记
1. DOMContentLoaded DOM树构建完成时触发该事件 load 页面加载完毕触发 原生js document.addEventListener('DOMContentLoaded', ...
- Translation perface: <<Professional JavaScript for Web Developers, 3rd Edition>>
It is a huge pitty to breaking translating this book. Sincerly speaking, I am striken by this great ...
- Professional JavaScript for Web Developers P226
我是这么理解的: (object.getName = object.getName),这条语句在执行结束后,返回的是右操作数object.getName: 但是关键是这个右操作数现在放在哪里 ? 我 ...
- Professional JavaScript for Web Developers P224-P225
然后第二段代码执行过程中,有1个global variabe object,1个createFunction activation object,10个anonymous function1 acti ...
- 《PHP与MySQL WEB开发》读书笔记
<PHP与MySQL WEB开发>读书笔记 作者:[美]Luke Welling PHP输出的HereDoc语法: echo <<<theEnd line 1 line ...
- 《白帽子讲Web安全》- 学习笔记
一.为何要了解Web安全 最近加入新公司后,公司的官网突然被Google标记为了不安全的诈骗网站,一时间我们信息技术部门成为了众矢之的,虽然老官网并不是我们开发的(因为开发老官网的前辈们全都跑路了). ...
随机推荐
- 前端多选插件bootstrap-select的使用
一.分别引入bootstrap-select.min.js和bootstrap-select.min.css文件 二.在页面中写一个class为selectpicker的select控件 <se ...
- linux----------centos下添加环境变量
1.添加PHP的环境变量.如图操作 其中在 /etc/profile里面编辑的内容是:只加了这一行,箭头所指的那一行. 2.需要添加其他环境变量就在后面用 :追加 PATH=$PATH:/usr/lo ...
- PS跑马灯效果和更换图标
最终效果 1.图片修改 跑马灯效果图 Head页面 使用的 IScript_HPDefaultHdr() in WEBLIB_PORTAL.PORTAL_HOMEPAGE 这个页面 一 ...
- .Net Collection Distinct 去重
由于业务场景的需要,海量的数据需要进行处理.组装,难免会出现冗余的重复数据.如何处理重复的数据就是一个问题. 简单的集合中,去重就可以用linq distinct来完成.对于复杂的集合直接使用dist ...
- sql server中的while循环语句
语法格式: while 条件 begin ....... end declare @num begin update SDetail end
- Spring boot 源码分析(前言)
开坑达人 & 断更达人的我又回来了 翻译的坑还没填完,这次再开个新坑= = 嗯,spring boot的源码分析 本坑不打算教你怎么用spring boot = = 也不打算跟你讲这玩意多方便 ...
- spring mvc get请求中文乱码问题
使用Spring MVC进行get请求时发现get请求带上中文参数,后台收到的是乱码,即使加了encoding filter也没用. 原因是,encoding filter 是针对post请求的,to ...
- volatile CAS
减少上下文切换的方法有无锁并发编程.CAS算法.使用最少线程和使用协程. 无锁并发编程.多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一 些办法来避免使用锁,如将数据的ID按照Hash ...
- C++隐藏任务栏图标
在VC编程中,有时候我们需要将我们的程序在任务栏上的显示隐藏起来,我试过几种方法,下面我介绍一下我知道的三种方法. 第一种方法是设置窗口WS_EX_TOOLWINDOW扩展样式,通过在OnInitDi ...
- c# 将csv文件转换datatable的两种方式。
第一种: public static DataTable csvdatatable(string path) { DataTable dt = new DataTable(); string conn ...