JavaScript高级程序设计:第二章
在HTML中使用JavaScript
1.<script>元素:向HTML页面中插入JavaScript的主要方法就是使用<scritp>元素。HTML4.01为<script>定义了下列6个属性。
(1)async:可选。表示立即下载脚本,但不妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。
(2)charset:可选。表示通过src属性指定的代码的字符集。由于大多数浏览器会忽略它的值,因此这个属性很少有人用。
(3)defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。
(4)language:已废弃。原来用于表示编写代码使用的脚本语言,大多数浏览器会忽略这个属性。
(5)src:可选。表示包含要执行代码的外部文件。
(6)type:可选。可以看成是language的替代属性;表示编写代码使用的脚本语言的内容类型。目前type的值大多数仍旧使用text / javascript属性。这个属性并不是必须的,如果没有指定这个属性,则其默认值为text / javascript。
2.使用<script>元素的方式有两种:
(1)直接在页面中嵌入JavaScript代码:
在使用<script>元素嵌入JavaScript代码时,只需为<script>指定type属性值。然后,像下面这样把JavaScript代码直接放在元素内部即可:
<script type=” text / javascript”>
function sayHi ( ) {
alert ( “Hi! “ ) ;
}
</script>
包含在<script>元素内部的代码将被从上至下一次解析。注意,不要在代码中任何地方出现“</script>”字符串,否则会产生错误。因为浏览器遇到</script>时会认为这是结束标签。可以通过吧这个字符串分隔为两个部分可以解决这个问题,例如:
<script type=”text / javascript ”>
function sayScript(){
alert(“<\ /script>”);
}
这样就不会早晨浏览器的误解。
(2)包含外部JavaScript文件:如果要通过<script>元素来包含外部JavaScript文件,那么src属性就是必须的。这是属性的值是一个指向外部JavaScript文件的链接。例如:
<script type=”text / javascript” src=”example.js”> </script>
外部文件只需包含通常要放在开始的<script>和结束的</script>之间的那些JavaScript代码即可。可以在XHTML文档中省略</script>标签,例如:
<script type=” text / javascript ” src=”example.js” />
但是不能再HTML文档使用这种语法,原因是这种语法不符合HTML规范。而且也得不到某些浏览器的正确解析。
需要注意的是:带有src属性的<script>元素不应该只在其<script>和</script>标签之间再包含额外的JavaScript代码。如果包含了嵌入的代码,则只会下载并执行外部脚本文件,嵌入的代码会被忽略。
3.标签的位置:
所有<script>元素都应该放在界面的<head>元素中。例如:
<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page </title>
<script type=”text / javascript” src=”example.js”></script>
<script type=”text / javascript” src=”example2.js”></script>
</head>
<body>
<!—这里放内容-->
</body>
</html>
这种做法就是要把所有外部文件的引用都放在相同的地方。这意味着必须等到所有JavaScript代码都被下载、解析和执行完成以后才能开始呈现页面的内容。对于需要很多JS代码的页面来说无疑会导致延迟。
为了避免这个问题,现代Web应用程序一般都把全部JavaScript引用放在<body>元素中页面的内容后面。如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page </title>
</head>
<body>
<!—这里放内容 -->
<script type=”text / javascript” src=”example.js” ></script>
<script type=”text / javascript” src=”example.js ” ></script>
</body>
</html>
这样,在解析包含JavaScript代码之前,页面的内容将完全呈现在浏览器中,而用户也会因为浏览器窗口显示空白页面的时间缩短而感到打开页面的速度加快了。
4.脚本:
(1)延迟脚本:
HTML4.01为<script>标签定义了defer属性。这个属性的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。因此,在<script>元素中设置defer属性,相当于告诉浏览器立即下载,但延期执行。
<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page </title>
<script type=”text / javascript” defer=”defer” src=”example1.js”></script>
<script type=”text / javascript” defer=”defer” src=”example2.js”></script>
</head>
<body>
<!-- 这里放内容 -->
</body>
</html>
html5规范要求脚本按照它们出现的先后顺序执行,因此第一个延迟脚本会先于第二个延迟脚本执行,在现实当中,延迟脚本不一定按照顺序执行,也不一定会在DOMContentLoaded事件触发前执行,因此最好只包含一个延迟脚本。
(2)异步脚本:
HTML5为<script>元素定义了async属性。这个属性与defer属性类似,都用于改变处理脚本的行为。同样与defer类似,async只适用于外部脚本文件,并告诉浏览器立即下载文件。但与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。
异步脚本一定会在页面的load事件之前执行。但可能会在DOMContentLoaded事件触发之前或之后执行。
5.嵌入代码与外部文件:
尽可能使用外部文件来包含JavaScript代码,有以下优点:可维护性、可缓存、适应未来。
6.文档模式:最初的两种文档模式是:混杂模式和标准模式。这两种模式主要影响CSS内容的呈现,某些情况下也会影响JavaScript的解释执行。
7.<noscript>元素:
早期浏览器都面临一个特殊问题,当浏览器不支持JavaScript时如何让页面平稳地退化。对这个问题的最终解决方案就是创造一个<noscript>元素,用以在不支持JavaScript的浏览器中显示替代的内容。这个元素可以包含能够出现在文档<body>中的任何HTML元素——<script>元素除外。包含在<noscript>元素中的内容只有在下列情况下才会显示出来:
(1)浏览器不支持脚本;
(2)浏览器支持脚本,但是脚本被禁用。
符合上述任何一个条件,浏览器都会显示<noscript>中的内容。而在除此之外的情况下,浏览器不会呈现<noscript>中的内容。例如:
<html>
<head>
<title>Example HTML Page </title>
<script type=” text / javascript ” defer=”defer” src=”example1.js”> </script>
<script type=” text / javascript ” defer=”defer” src=”example2.js”> </script>
</head>
<body>
<noscript>
<p>本页面需要浏览器支持(启用)JavaScript。
</noscript>
</body>
</html>
这个页面会在脚本无效的情况下向用户显示一条消息。而在启用了脚本的浏览器中,用户永远也不会看到它——尽管它是页面的一部分。
JavaScript高级程序设计:第二章的更多相关文章
- javascript高级程序设计第二章知识点提炼
这是我整理的javascript高级程序设计第二章的脑图,内容也是非常浅显与简单.希望您看了我的博客能够给我一些意见或者建议.
- javascript高级程序设计第二章
看后总结: 1.js代码用得最多的两种加载方式: a)外部文件形式:<script type="text/javascript" src="jquery.min.j ...
- 读书笔记 - javascript 高级程序设计 - 第二章 在Html中使用JavaScript
1 <script>的6个属性 async 立即下载当前script标签的外部脚本 但不能影响别的 charset 没用了 defer 文档显示之后再执行脚本,只对外部脚本有效 lan ...
- javascript高级程序设计---第二、三章
在HTML中引用javaScript javascript的几个属性 type async(异步加载 只适用于外部JS且IE8以上 HTML5规范 先于load执行) src defer(延迟加载 ...
- JavaScript 高级程序设计第二版
20.4 部署 20.4.1 构建 构建过程始于在源控制中定义用于存储文件的逻辑结构.最好避免使用一个文件存放所有的JavaScript,遵循以下面向对象语言中的典型模式:将每个对象或自定义了类别分别 ...
- javascript高级程序设计第一章有感
第一章JavaScript简介 Javascript的诞生最早是为了处理表单数据验证的问题,以前主要是使用perl这个强大的服务端脚本语言处理的.在未诞生javascript之前, 人们每次提交表单就 ...
- javascript 高级程序设计1--14章重点总结
js简介 首先介绍了js是一种专门与网页交互而设计的脚本语言.主要由ECMAScript 文档对象模型(DOM) 浏览器对象模型(BOM)三部分组成.分别用来提供核心语言,提供访问和操作网页内容的方法 ...
- JavaScript 高级程序设计 第二版
function outputNumbers(count) { (function () { for (var i =0;i < count; i++) { ...
- javascript高级程序设计第一章
看后总结: 1.javascript的组成成分:ECMAscript+DOM+BOM
- 读书笔记 - javascript 高级程序设计 - 第一章 简介
第一章 简介 诞生时间 1995 最初用途 客服端验证 第一版标准 注意是标准 1997年 Ecma-262 一个完整的js实现由三部分组成 ECMAScript DOM 文档对象模型 BO ...
随机推荐
- Python----文件的IO操作
一.文件操作 r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. rb 以二进制格式打开一个文件用于只读.文件指针将会放在文件的开头.这是默认模式. r+ 打开一个文件用于读写.文件 ...
- java.util.Timer类似于闹钟定时做任务
在web中实现任务计划,相当于实现闹钟的功能,要完成2个步骤: 1.定时器的设置: 2.对这个定时器的启动运行和停止进行实时监听 java.util.Timer定时器,实际上是个线程,定时调度所拥有的 ...
- Applet签名
applet签名 1.生成密匙库 keytool -genkey -keystore mytest.store -alias mytest -validity 365 -keystore 密匙库 -a ...
- ubuntu 把终端信息输出到文本文件中的方法
方法一:把终端中所有信息都写到文本文件中 在终端的命令行中输入以下命令: $ script -f output.txt 这样就会在当前目录下创建一个output.txt文件 接下来,在按 ...
- AVFoundation--AVPlayer
// // AVPlayerNetViewController.m // PodsTest // // Created by ZhuYi on 16/4/29. // Copyright © 2016 ...
- Spark开发指南
原文链接http://www.sxt.cn/info-2730-u-756.html 目录 Spark开发指南 简介 接入Spark Java 初始化Spark Java 弹性分布式数据集 并行集合 ...
- shell初学
超简单的一段shell代码,查看电脑属性,删除无效安装包,查看天气.FYI #!/bin/bash echo -e '\n' echo "Hello,`whoami`" echo ...
- PerformSelector 和 NSInvocation
- Ubuntu环境变量——系统变量和用户变量
系统变量: 对所有用户有效果 /etc/profile /etc/environment 两个命令只用一个就可以,原则上是重启后修改生效,但是经过验证可以通过执行以下命令实现: source /etc ...
- Openjudge-计算概论(A)-骑车与走路
描述: 在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车.开锁.停车.锁车等,这要耽误一些时间.假设找到自行车,开锁并车上自行车的时间为27秒;停车 ...