文章目录

  • 书接上文
    • 1.行内代码与外部文件
    • 2.文档模式
    • 3.元素
    • 4.小结

书接上文


1.行内代码与外部文件

虽然可以直接在 HTML 文件中嵌入 JavaScript 代码,但通常认为最佳实践是尽可能将 JavaScript 代
码放在外部文件中。不过这个最佳实践并不是明确的强制性规则。推荐使用外部文件的理由如下。

  1. 可维护性 javascript代码如果分散到很多的页面 会导致维护困难
  2. 缓存 浏览器会根据特定的设置缓存所有外部链接的javascript文件,意味着如果俩个页面都用到同一个文件,则改文件只需要下载一次。最终 意味着页面加载更快。
  3. 适应未来

2.文档模式

IE5.5 发明了文档模式的概念,即可以使用 doctype 切换文档模式
最初的文档模式有俩种 混杂模式和标准模式 后者兼容标准行为
虽然这俩种模式主要区别只体现在通过css渲染的内容方面 但对javascript 也有一些关联影响 称之为副作用

之后 又出现了第三种文档模式 : 准标准模式 主要区别在于如何对待图片元素周围的空白

标准模式通过下列几种文档类型声明开启:

<!-- HTML 4.01 Strict -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!-- XHTML 1.0 Strict -->
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- HTML5 -->
<!DOCTYPE html>

准标准模式通过过渡性文档类型(Transitional)和框架集文档类型(Frameset)来触发

<!-- HTML 4.01 Transitional -->
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!-- HTML 4.01 Frameset -->
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<!-- XHTML 1.0 Transitional -->
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- XHTML 1.0 Frameset -->
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

准标准模式与标准模式非常接近,很少需要区分。人们在说到“标准模式”时,可能指其中任何一
个。而对文档模式的检测(本书后面会讨论)也不会区分它们。本书后面所说的标准模式,指的就是除
混杂模式以外的模式。

3.元素

针对早期浏览器不支持 JavaScript 的问题,需要一个页面优雅降级的处理方案。最终,< noscript>元素出现,被用于给不支持 JavaScript 的浏览器提供替代内容


< noscript>元素可以包含任何可以出现在中的 HTML 元素,< script>除外。在下列两种情况下,浏览器将显示包含在中的内容:

  1. 浏览器不支持脚本
  2. 浏览器对脚本的支持被关闭
    任何一个条件被满足,包含在中的内容就会被渲染。否则,浏览器不会渲染
    中的内容。
<!DOCTYPE html>
<html> <head> <title>Example HTML Page</title> <script defer="defer" src="example1.js"></script> <script defer="defer" src="example2.js"></script> </head> <body> <noscript> <p>This page requires a JavaScript-enabled browser.</p> </noscript> </body>
</html>

这个例子是在脚本不可用时让浏览器显示一段话。如果浏览器支持脚本,则用户永远不会看到它。

4.小结

  1. 要包含外部javascript文件 必须将src属性设置为要包含文件的url 文件可以跟网页在同一台服务器上 也可以为与完全不同的域
  2. 所有< script> 元素会依照他们在网页中出现的次序被解释 在不使用defer和asunc 属性的情况下 包含在< script>元素中的代码必须严格按次序解释
  3. 对不推迟执行的脚本 浏览器必须解释完位于< script>元素中的代码 然后才能继续渲染页面的剩余部分,为此 通常应该把< script>元素放到页面末尾 介于主内容之后以及 </ body>之前
  4. 可以使用defer属性把脚本推迟到文档渲染完毕后再执行 。推迟的脚本原则上按照他们列出的次序被执行
  5. 可以使用async 属性表示脚本不需要等待其他脚本,同时也不阻塞文档渲染,即异步加载 。不能保证他们按页面中的出现的次序执行
  6. 通过使用 < noscript> 元素 可以指定浏览器不支持脚本时显示的内容 。如果浏览器支持开启用脚本 则< noscript> 元素中的任何内容都不会被渲染

javascript 高级程序设计 (第四版) 第二章 下相关推荐

  1. JavaScript高级程序设计第四版学习--第二十四章

    title: JavaScript高级程序设计第四版学习–第二十四章 date: 2021-5-31 10:46:01 author: Xilong88 tags: JavaScript 本章内容: ...

  2. JavaScript高级程序设计第四版_英文版

    [实例简介] 文件:590m.com/f/25127180-489056218-c2ed13(访问密码:551685) 以下内容无关: -------------------------------- ...

  3. JavaScript高级程序设计第三版.CHM【带实例】

    从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...

  4. JavaScript高级程序设计 第4版----String

    JavaScript高级程序设计 第4版----String 文章目录 JavaScript高级程序设计 第4版----String 1.JavaScript 字符 2.字符串操作方法 1.conca ...

  5. JavaScript高级程序设计[第3版]

    JavaScript高级程序设计[第3版] package xyz.huning.toolkit.pdf;import java.io.FileOutputStream; import java.io ...

  6. javascript高级程序设计 第三版

    网盘地址 提取码:vh81 笔记 第二章 2.1script标签 <script>元素属性:async.charset.defer.language.src.type async和defe ...

  7. 汇编语言 王爽 第四版 第二章 检测点2.2

    汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 检测点2.2 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH . 最小肯定是偏移地址为0, ...

  8. JavaScript高级程序设计第三版 第3章 基本概念

    第3章 基本概念 3.1 语法 3.1.1 区分大小写 3.1.2 标识符 3.1.3 注释 3.1.4 严格模式 3.1.5 语句 3.2 关键字和保留字 3.3 变量 3.4 数据类型 3.4.1 ...

  9. JavaScript高级程序设计 第四章---变量 作用域 内存

    第四章-变量 作用域 内存 关键字:变量 作用域 内存 本章内容 通过变量使用原始值与引用值 理解执行上下文 理解垃圾回收 4.1 原始值与引用值 ECMAScript 变量可以包含两种不同类型的数据 ...

  10. JavaScript 高级程序设计第四章解读,总结。

    第四章 变量,作用域与内存 通过变量使用原始值 - 1. 原始值与引用值+ 原始值: 最简单的数据+ 引用值: 多个值构成的对象 - 2. 原始值有哪些+ Undefined Null Boolean ...

最新文章

  1. oracle 查二进制字符串,检测二进制文件 - Oracle® Developer Studio 12.5:Discover 和 Uncover 用户指南...
  2. 001_SpringBoot入门
  3. 开始使用gradle(二)
  4. Catlike Coding网站文章解析 -- 1.Procedural Grid
  5. redux异步action_react-redux--异步Action
  6. 企业会计准则2020版pdf_企业会计准则及应用指南(2017版)
  7. [转]让内网MOSS门户也用域名访问
  8. 进阶之路:Java 日志框架全画传(上)
  9. ideal pom文件安装到maven库中_不装 maven 直接使用 IntelliJ 的插件来把本地 jar 包加入到 maven 仓库...
  10. java byte 相等比较_Java字节码跟真正汇编的比较
  11. 带你理清:ROS机器人导航功能实现、解析、以及参数说明
  12. 恒生电子2020届秋季招聘实录(已签offer)
  13. python基础之字符串(七)
  14. 浅谈高内聚与松耦合,各人自扫门前雪,莫管他人瓦上霜
  15. 云原生IDE:iVX免费的首个通用无代码开发平台
  16. 微信小程序面试题(个人学习)
  17. 【NLP模型笔记】Intro || Word2vec词向量模型
  18. 探寻宝藏-双进程DP(优化版)
  19. 什么是泛型?泛型的基本原理与使用优势。
  20. 如何获取不同年份的poi_抖音营销案例爆红抖音,万人争领,屈臣氏“魔盒”如何联动线上线下?...

热门文章

  1. Qt5.2.1 + VS2010安装错误(Unable to find a Qt build)
  2. Java爬虫-使用爬虫下载千张美女图片!
  3. 黑马程序员全套Java教程_Java基础入门视频教程零基础自学Java必备教程视频讲义(4)
  4. python网页抓取与按键精灵原理一样吗_Python——爬虫——爬虫的原理与数据抓取...
  5. Win10如何安装VC6
  6. CC2530射频通信
  7. 台达plc用c语言编程软件,台达plc编程
  8. 计算机组成原理(微课版)谭志虎pdf资源
  9. 北京54坐标和经纬度坐标转换算法(C++)
  10. php社交项目源代码,PHP交友聊天源码,社交网络网站源代码,带即时聊天,带聊天室功能,带原生APP源码...