第二章 HTML中的JavaScript 红宝书笔记

  • 在使用行内 JavaScript 代码时,要注意代码中不能出现字符串。比如,下面的代码会导致浏览器报错:
 <script> 
 function sayScript() { 
 console.log("</script>"); 
 } 
</script>

想避免这个问题,只需要转义字符“\”即可:

<script> 
 function sayScript() { 
 console.log("<\/script>"); 
 } 
</script>
  • 在script元素中的代码被计算完成之前,页面的其余内容不会被
    加载,也不会被显示。
  • 与解释行内 JavaScript 一样,在解释外部 JavaScript 文件时,页
    面也会阻塞。(阻塞时间也包含下载文件的时间。)
  • 现代 Web 应用程序通常将所有 JavaScript 引用放在元素中的页面内容后面
<!DOCTYPE html> 
<html> 
 <head> 
 <title>Example HTML Page</title> 
 </head> 
 <body> 
 <!-- 这里是页面内容 --> 
 <script src="example1.js"></script> 
 <script src="example2.js"></script> 
 </body> 
</html>

这样一来,页面会在处理 JavaScript 代码之前完全渲染页面。用户会感觉页面加载更快了,因为浏览器显示空白页面的时间短了。

  • defer属性 推迟执行脚本

    • 脚本会被延迟到整个页面都解析完毕后再运行。
    • 相当于告诉浏览器立即下载,但延迟执行
    • 第一个推迟的脚本会在第二个推迟的脚本之前执行
  • async属性 异步执行脚本

    • async 属性与 defer 类似。
    • 与 defer 不同的是,标记为 async 的脚本并不保证能按照它们出现的次序执行
    • 使用 async 也会告诉页面你不会使用document.write
  • 动态加载脚本,使用DOM添加script元素,加载指定脚本

    • 下述方式是默认异步加载,相当于添加了async属性
    let script = document.createElement('script'); 
    script.src = 'gibberish.js'; 
    document.head.appendChild(script);
    
    • 并不是所有浏览器都支持async属性,可以明确设置为同步加载
    	let script = document.createElement('script'); 
    	script.src = 'gibberish.js'; 
    	script.async = false; 
    	document.head.appendChild(script);
    
  • 可扩展超文本标记语言XHTML

    • 在 XHTML 中使用 JavaScript 必须指定 type 属性且值为text/javascript
    • 在 XHTML 中编写代码的规则比 HTML 中严格
    • CDATA 标记必须使用 JavaScript 注释来抵消
   	<script type="text/javascript"> 
   //<![CDATA[ 
		function compare(a, b) { 
		if (a < b) { 
		console.log("A is less than B"); 
		} else if (a > b) { 
		console.log("A is greater than B"); 
		} else { 
		console.log("A is equal to B"); 
	} 
} 
//]]> 
</script>
  • 通过使用元素,可以指定在浏览器不支持脚本时显示的内容。如果浏览器支持并启用脚本,则元素中的任何内容都不会被渲染。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值