javascript 高级程序设计(第4版)阅读笔记(二)

第2章节,主要讲的是script元素、行内与外部脚本的比较、文档模式、js不可用时的做法。没有书,或者懒得看书的可以看我写的概括啦~尽量短小精辟会一直更下去der!

1、script元素

从上到下解释代码,按页面出现顺序进行执行(前提是没有使用async和defer)

· async:只对外部脚本有效,立即下载脚本,不保证能按照它们出现的次序执行,谁先下载完就加载谁,会在页面load事件前执行,不应该在加载期间修改dom,一些浏览器会忽略;

· defer:只对外部脚本有效,告诉浏览器立即下载,但延迟到文档完全解析后再执行,原则上按照它们被列出的次序执行,一些浏览器会忽略;

· charset:配合src属性指定代码字符集,大多浏览器不在乎;

· src:要被执行的外部文件,可以是url不受同源策略影响解析url时使用get请求,受父页面 HTTP/HTTPS 协议的限制;

· crossorigin:默认不使用 CORS,crossorigin="use-credentials"设置凭据标志,意味着出站请求会包含凭据;

· integrity:对比接收到的资源的签名与这个属性指定的签名是否匹配,否则页面会报错,脚本不会执行,可以防范安全问题,但不是所有浏览器都支持;

· type:这个值始终都是"text/javascript";

2、使用script的方式

使用script的方式有两种,一种是在<script>元素中写代码(行内代码),一种是src属性进行引入代码

第一种:(行内代码)

<script>
   function sayScript(){
      //代码中不能出现字符串</script>会报错被当成结束标签
      //配合使用转义字符“\”就可
       console.log("<\/script>");
    }
</script>

第二种:(外部引入)

<script src="example.js"></script>
//外部引入<script></script>闭合标签中不能再写行内代码,行内代码会被忽略

· 推荐使用外部引入文件:

不分散、集中好维护;浏览器会有缓存,只需要下载一次,加载更快;

3、script的标签位置

放在<head>标签内,js解析完了才渲染body页面,如果js比较多会有渲染延迟导致明显空白。

放在<body>元素中的页面内容后面,可以解决以上问题

<body>
  <!-- 这里是页面内容 -->
  <script src="example1.js"></script>
  <script src="example2.js"></script>
</body>

4、动态加载js

//这种方式相当于加了个async,属于异,并非所有浏览器都支持async属性
let script = document.createElement(‘script’);
script.src = “example.js”;
//-------start 加上以下这句,为同步加载
script.async = false;
//--------end
Document.head.appendChild(script);

影响队列的优先级 可能 会影响性能,让预加载器知道动态js的存在,在头部显式声明一下:

<link rel="preload" href="example.js">

5、文档模式

混杂模式和标准模式、准标准模式

· 混杂模式:混杂模式在所有浏览器中都以省略文档开头的 doctype 声明作为开关。这种约定并不合理,混杂模式在不同浏览器中的差异非常大。

· 准标准模式与标准模式:非常接近,很少需要区分,一般都直接叫标准模式。

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

<!-- 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">

6、js不可用时的做法

使用<noscript>元素,可以指定在浏览器不支持脚本时显示的内容。如果浏览器支持并启

用脚本,则<noscript>元素中的任何内容都不会被渲染。

<noscript>
    <p>该浏览器不支持脚本,换个浏览器吧</p>
</noscript>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值