2.在HTML中使用JavaScript
1. script元素
向HTML中插入JavaScript的主要方法,就是使用script标签
HTML 4.01为script标签定义了6个属性
- async:可选,表示异步,立即下载脚本,但是不妨碍页面中其它操作。只对外部脚本文件有效
- charset:可选,表示通过src属性指定的代码的字符集。大多数浏览器会忽略他的值
- defer:可选, 表示脚本可以延迟到文档完全被解析之后再执行,只对外部文件有效
- language:已废弃,原用来表示编写代码所使用的脚本语言
- src:可选,表示要执行的代码外部文件
- type:可选,可以看成是language的代替属性,表示编写代码使用的脚本语言的内容类型。默认为 text/javascript
使用script标签的方式:直接在页面中嵌入JavaScript代码和包含外部文件
在使用script标签嵌入JavaScript代码时,需要为该标签指定type属性,然后将JavaScript代码放入即可
<script>
function sayHi(){
alert("Hi~")
}
<script>
注意:
如果要使用外部JavaScript文件,则script标签的src属性就是必须的,这个属性的值就是一个指向外部JavaScript文件的链接
<script type="text/javascript" src="example.js"></script>
在使用嵌入式JavaScript代码时,切忌不要在任何地方出现“script”字符串,因为浏览器会将其解析为结束标签
eg:错误的写法(会报错)
<script>
function sayScript(){
alert("</script>");
}
</script>
eg:正确的写法(通过转义字符转义)
<script>
function sayScript(){
alert("<\/script>");
}
</script>
- 包含在script标签中的代码,将会被从上到下依次解释
2. 标签的位置
按照传统的做法,所有的script标签都要放在页面的head标签中。
这种做法意味着页面要等全部的JavaScript代码都被下载和执行完成以后,才开始呈现页面的内容。这无疑会导致页面页面在加载的时候出现延迟。影响用户体验。为避免这个问题,现代的web应用程序一般把全部的JavaScript放在标签的最后面
<!DOCTYPE>
<html>
<head>
<title>Example Html page</title>
</head>
<body>
//...内容区
<script type="text/javascript" src="example1.js" ></script>
<script type="text/javascript" src="example2.js" ></script>
</body>
</html>
3.延迟和异步加载
defer属性:脚本会被延迟到整个页面都解析完成之后再运行,因此,在script标签中设置该属性,等于告诉浏览器,立即下载,延迟执行
async:只适用于外部脚本文件,并告诉浏览器立即下载文件,但是并不保证按照指定它们的先后顺序执行
4.嵌入代码与外部代码的区别
一般认为最好的做法还是尽可能使用外部文件来包含JavaScript代码
外部文件含有如下优点:
- 可维护性强
- 可缓存:如果有两个文件使用同一个JavaScript文件,那么该JavaScript文件只会被加载一次,可以加快页面加载速度
- 适应未来
5.noscript元素
包含noscript的元素只有在以下情况下才会显示出来
- 浏览器不支持脚本
- 浏览器支持脚本,但是脚本被禁用
只有符合以上条件,noscript标签中的内容才会显示出来
<!DOCTYPE>
<html>
<head>
<title>Example Html page</title>
<script type="text/javascript" src="example1.js" ></script>
<script type="text/javascript" src="example2.js" ></script>
</head>
<body>
<noscript>
<p>
本页面需要浏览器支持(启用)JavaScript
</p>
</noscript>
</body>
</html>
这个页面会在脚本无效的情况下向用户展示一条信息。而在启用了脚本的浏览器中,用户永远也不会看到它,即使它是页面的一部分
6. 小结
- 包含外部的JavaScript文件的时候,
script标签必须使用src属性指定外部文件链接 - 在不使用异步和延迟加载(async,defer)的情况下,所有script标签中的元素都会按照他们在文件中出现的顺序依次依次加载,只有解析完前面的
script标签之后,才会解析后面的 - defer属性可以让脚本在文档完全呈现之后再去执行,延迟脚本总是按照他们的顺序执行
- async属性可以表示当前脚本不必等待其他脚本,也不必阻塞文档呈现,但是不能保证异步脚本按照他们原来的顺序
noscript标签可以指定在不支持脚本的浏览器中显示替代的内容,但是在启用了脚本的浏览器中,浏览器不会显示该标签中的任何内容
2.在HTML中使用JavaScript的更多相关文章
- JavaScript高级程序设计-(1)html中使用JavaScript
html中使用JavaScript 1.延迟脚本 script标签定义了defer属性,脚本会被延迟到整个页面都解析完毕后运行 详细内容如下: 2.异步脚本 script标签定义了async属性,as ...
- 在HTML中使用JavaScript元素
script属性<script async = async charset="utf-8" defer="defer" src="index.h ...
- 2在HTML中使用JavaScript
像HTML页面中插入JavaScrip的主要方法,就是使用<script>元素.HTML4.01为<script>定义了6个属性:async:可选,表示应该立即下载脚本,当不妨 ...
- javascript高级编程3第二章:在html中使用javascript
2.1 <script>元素 向html页面中插入javascript的主要方法,就是使用<script>元素.这个元素被加入到正式的html规范中.html4.01为< ...
- JS高程2.在HTML中使用Javascript(1)
1.使用<script>元素向HTML页面中插入Javascript HTML4.01中<script>标签有6个属性: (1)async:可选.表示立即下载脚本,不影响页面中 ...
- 在Swift中使用JavaScript的方法和技巧
本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...
- js002-在HTML中使用JavaScript
js002-在HTML中使用JavaScript 2.1 <script>元素 定义了以下6个属性 async: 可选.表示应该立即下载脚本,但不妨碍页面中的 ...
- Javascript高级程序设计——在HTML中使用Javascript
<script>元素 向HTML页面中插入Javascript的主要方法,就是使用<script>元素,<script>元素有六个属性: async:可选.表示应该 ...
- 2. javacript高级程序设计-在HTML中使用JavaScript
1.1 <script>元素 向HTML页面中插入JavaScript的主要方法,就是使用<script>元素,<script>元素定义了一下6个元素: (1). ...
- js-js实现,在HTML中使用JavaScript,基本概念
Js实现: 1.JavaScript实现的组成: 核心(ECMAScript):由ECMA-262定义,提供核心语言功能 文档对象模型(DOM)提供访问和操作网页内容的方法以及接口 浏览器对象模型(B ...
随机推荐
- 【java编程】vo、po、dto、bo、pojo、entity、mode如何区分
Java Bean:一种可重用组件,即“一次编写,任何地方执行,任何地方重用”.满足三个条件 类必须是具体的和公共的 具有无参构造器 提供一致性设计模式的公共方法将内部域或暴露成员属性 VO valu ...
- 坐标转换7参数计算工具——arcgis 地理处理工具案例教程
坐标转换7参数计算工具--arcgis 地理处理工具案例教程 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 不接受个人免费咨询. 提供API,独 ...
- 【vue】解决npm run build失败问题
问题说明: 首先,npm run build失败的原因大部分都是因为webpack的子库和webpack的版本号不对应的问题
- Windows下将网络共享目录挂载到指定文件夹
简述 因为某些原因,设计好的目录结构是不能动的,因此需要将网络共享目录挂载到指定目录下,以便扩容. 在Linux下这完全没有问题,但是Windows下的操作就稍微复杂一点. 1.直接使用net use ...
- 1093 - You can't specify target table 'account' for update in FROM clause
目的:查询一张表的相同的两条数据,并删除一条数据. 分析 先查询出相同的数据,然后删除 查询相同的数据 SELECT a.id FROM account a GROUP BY a.username H ...
- (转nginx不浏览直接下载文件的解决方法
原文:https://www.zhan200.com/xwt/39.html 如果nginx配置不对,就会造成部分文件,在浏览器中不是直接预览,而是进行了下载.修改的方法是修改配置文件.具体解决方法如 ...
- 由swap引出的局部变量,形参和指针的小问题
1.第一种实现swap函数的方法是: swap(int a,int b) { Int c = a;a = b;b =c; } 这表面一看确实是实现了整数a,b的交换,当拿来用时发现,结果并不是我们想要 ...
- ES技巧
2, 统计字段b的不同值的数量 {"size":0,"aggs":{"distinct_colors":{"cardinality ...
- webuploader超时时间timeout设置
参考:http://www.codingwhy.com/view/841.html 备注下!
- PLSQL无法连接64位Oracle数据库/Database下拉框为空的解决方法
原创:https://blog.csdn.net/sdmanooo/article/details/14055077 今儿个重装了个系统,win7 64位.接着装了个64位的oracle11g,ora ...