主要内容
---使用<script>元素
---嵌入脚本与外部脚本
---文档模式对JavaScript的影响
---考虑禁用JavaScript的场景

<script>元素
---向html页面中插入JavaScript的主要方法
---由Netscape创造 后被加入到正式html规范

<script> html4.01定义的6个属性
---src(可选),表示包含要执行代码的外部文件
---type(可选),可堪称language的代替属性,表示编写代码使用的脚本语言的内容类型(也称MIME类型),默认为text/javascript,考虑到约定俗成和兼容性,也还是写这个。
---async(可选),表示应该立即下载脚本,但不妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效
---charset(可选),表示通过src属性指定代码的字符集。由于大多数浏览器会忽略他的值,因此这个属性很少用。
---defer(可选),表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效,ie7及其更早版本也支持
---language(已废弃)表示编写代码使用的脚本语言(js,js1.2,vbjs),浏览器会忽略他,现在也没必要了

在<script>元素中嵌入JavaScript代码时,只须指定type属性(考虑兼容性最好写上)

 <script type="text/javascript">
function sayHi() {
alert("Hi!");
}
</script>

--解释器会解释到一个函数定义,然后把该定义保存在自己的环境中
--在解释器对<script>元素内部所有代码求值完毕之前,页面中的其余内容都不会被浏览器加载或者显示

--包含在<script>元素内部的JavaScript代码将被从上到下依次解释
--在代码中间不要出现</script>,会被认为是结束标签,请使用转译\符号

通过<script>元素来包含外部JavaScript文件时,src属性就是必需的,该属性指向外部文件连接

<script type="text/javascript" src="example.js"></script>

--与嵌入的JavaScript代码一样,在解析外部JavaScript文件(包括下载该文件)时,页面的处理也会暂时停止

--外部JavaScript文件的后缀.js是可选的,浏览器不会检查包含js文件的扩展名,但是服务器需要看扩展名决定相应应用那种MIME类型,如果不写扩展名,请确保服务器能返回正确的MEIME类型

http请求和MIME(多用途互联网邮件扩展)

--带有src属性的<script>元素不能包含嵌入代码,会被忽略
--src可以包含外域JavaScript文件
--<script>元素 只要不存在defer和async属性,浏览器会依此解析

位置
--可以放在head中,现在一般放在body的最后,防止加载过慢 页面空白

延迟脚本
--html4.01定义了defer属性,立即下载,但延迟执行,只用于外部js文件
--defer属性也是按照顺序执行的
<script type="text/javascript" defer="defer" src="example.js"></script>

异步脚步
--html5定义了async属性,立即下载,页面继续进行解析时,异步执行
--无法保证多个async执行顺序,
<script type="text/javascript" async="async" src="example.js"></script>

注释:有多种执行外部脚本的方法:

---如果 async="async":脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行)

---如果不使用 async 且 defer="defer":脚本将在页面完成解析时执行

---如果既不使用 async 也不使用 defer:在浏览器继续解析页面之前,立即读取并执行脚本

xhtml 先不做过深学习

不推荐使用的语法
--之前为了让不支持<script>元素的浏览器可以隐藏嵌入的js代码的写法:
<script><!--
function sayHi() {
alert("Hi!");
}
//--></script>
--现在浏览器都支持js所以没必要了

外部文件js优点:
---可维护性,把js文件放在一起,方便维护
---可缓存,浏览器会缓存外部js文件,当两个页面都使用同一个js文件时,只需要被下载一次。
---适应未来,xhtml的适应问题

文档模式
---通过文档类型 doctype 切换 实现

<noscript>元素

--浏览器不支持脚本
--浏览器支持但是被禁止脚本
时显示。除此之外不会显示<noscript>元素内的内容

小结

《JavaScript高级程序设计》读书笔记(二)在html中使用JavaScript的更多相关文章

  1. 《JavaScript高级程序设计》笔记:在HTML中使用Javascript(二)

    script元素 向html页面中插入js的主要方法就是使用<script>元素.使用<script>元素的方式有两种:直接在页面中嵌入js代码和包含外部js文件.直接在页面中 ...

  2. javascript高级程序设计读书笔记

    第2章  在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...

  3. javascript高级程序设计读书笔记-事件(一)

    读书笔记,写的很乱   事件处理程序   事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别  没有DOM1 同样的事件 DOM0会顶掉html事件   因为他们都是属性  而 ...

  4. JavaScript高级程序设计 读书笔记

    第一章 JavaScript 简介 第二章 Html中使用JavaScript 第三章 基本概念 第四章 变量,作用域,内存 第五章 引用类型 第六章 面向对象 第七章 函数表达式 第八章 BOM 第 ...

  5. Javascript高级程序设计读书笔记(第二章)

    第二章  在HTML中使用Javascript 2.1<script>元素 延迟脚本(defer = "defer")表明脚本在执行时不会影响页面的构造,脚本会被延迟到 ...

  6. 《JavaScript高级程序设计》笔记二

    第二章 在HTML中使用JavaScript 要想把JavaScript放到网页中,就必须涉及到Web的核心语言HTML.向HTML页面中插入JavaScript的主要方法,就是使用<scrip ...

  7. JavaScript高级程序设计-读书笔记(6)

    第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JS ...

  8. JavaScript高级程序设计-读书笔记(1)

    第1章 JavaScript简介 JavaScript是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成: l        ECMAScript:提供核心语言功能: l        文 ...

  9. JavaScript高级程序设计读书笔记之JSON

    JSON(JavaScript Object Notation)JavaScript对象表示法.JSON是JavaScript的一个严格的子集,利用了JavaScript中的一些模式来表示结构化数据. ...

  10. JavaScript DOM 高级程序设计读书笔记二

    响应用户操作和事件 事件就是操作检测与脚本执行的组合,或者基于检测到的操作类型在某个对象上调用事件侦听器(事件处理程序). 事件的类型 事件可以分为几种类型:对象事件,鼠标事件,键盘事件(只适用于do ...

随机推荐

  1. docker添加potainer可视化管理工具

    具体来说就以下几个步骤,一般来说docker的运行环境都是在Linux下,即便是docker desktop装在windows下,默认的环境也是linux 1.先拉去镜像(网络不好的需要挂vpn或者设 ...

  2. ES5 寄生式继承

    3 寄生式继承 组合继承存在调用两次父类构造的问题 原型继承存在不能实例化对象不能传参的问题 组合继承和原型继承都存在子类原有原型属性被覆盖的问题 因此推荐使用寄生式继承 /* 寄生式继承: 1 解决 ...

  3. OO完结篇-第四单元小结

    OO第四单元小结 一.作业架构分析. 1.第一次作业 本次作业需要完成UML类图查询. 难点在于初次接触UML,需要对UML进行一定程度的学习和理解. 思路主要是根据每个传进来的element获取其t ...

  4. centos 添加rpmfusion源,yum 安装 ffmpeg

    rpmfusion提供了,在Fedora和 centos 源之外的其他yum 源 例如ffmpeg 在 centos 基础源和epel-release 里面都没有, 但是可以在rpmfusion中找到 ...

  5. 【C语言】判断学生成绩等级

    方法一:if-else #include<stdio.h> int main() { printf("请输入成绩:\n"); float score; scanf_s( ...

  6. 创建Maven project 提示pom.xml 首行错误

    背景 使用eclipse创建Maven SpringBoot 2.2.0 项目时报错,更换springboot 版本也不行,排除框架依赖原因.然后别人的eclipse创建的同样2.2.2 maven项 ...

  7. Python3 post 嵌套json

    目录 python3 post json burpsuite 抓取 python requests 数据包 小结 python3 post json 前些天python3 post出现的小问题做下记录 ...

  8. 吴裕雄 PYTHON 人工智能——基于MASK_RCNN目标检测(4)

    import os import sys import random import math import re import time import numpy as np import tenso ...

  9. 【C语言】逗号运算符的使用举例

    #include<stdio.h> int main(void) { , b = , c = , y, z; y = a + b, a + c;/*由y=a+b和a+c组成的逗号表达式*/ ...

  10. Uva 11300 Spreading the Wealth(贪心)

    题目链接:https://vjudge.net/problem/UVA-11300 这道题的思路太神了,但很难想到是贪心. 用M表示每个人最终拥有的金币数. 首先假设有四个人.假设1号给2号3枚,2号 ...