第二章:HTML中的JavaScript
2.1
<script>元素有8个属性。
在<script/>中不能出现<script/>字符串,非要用的话使用转义字符“\”。
包含外部文件中的JavaScript,必须使用src属性
//错误示范
<script src="exp.js"/>
这是一个无效的HTML。
使用了src属性的<script>不应该在<script></script>标签中再包含其他js代码。如果俩者都提供的话,浏览器只会下载并执行脚本文件,从而忽略行内代码。
标签位置:<script>放在了后面,用户体验的事:用户感觉页面加载更快了,因为浏览器显示空白页面的时间变短了。
defer和async --没啥用的感觉。
动态加载脚本
let script = document.createElenment('script');
script.src = 'gibberish.js';
script.async = false;
document.head.appendChild(script);
以这种方式获取的资源对浏览器预加载器是不可见的。严重影响它们在资源获取队列中的优先级。影响性能。如果想让预加载器知道这些动态请求文件的存在,可以在文档头部显示声明它们
<link rel="preload" href="gibberish.js">
XHTML可能作为历史遗留代码,在XHTML中使用使用js必须指定type属性为text/javascript。XHTML中的“<”会被解释成标签的开始,(作为标签开始的小于号后面不能有空格),会导致语法错误。解决方案1:把小于号换成<;2:把代码包含到一个CDATA中。如果浏览器不兼容CDATA,那么CDATA标记必须使用JS的注释来抵消。
废弃语法:滚犊子。
2.2 行内代码与外部文件
推荐使用外部文件的原因:
- 可维护性
- 缓存
- 适应未来
这一小节主要是考虑浏览器的兼容性问题,自我学习JS以来,现代的浏览器似乎不用考虑这些了。
第二章末的总结
- 要包含外部js文件,必须将src属性设置为要包含文件的URL。文件可以跟网页在同一台服务器上,也可以位于完全不同的域。
- 所有<script>元素会依照它们在网页中出现的次序被解释。不使用defer和async属性的情况下,包含在<script>元素中的代码必须严格按次序解释
- 对于不推迟执行的脚本,浏览器必须解释完位于<script>元素中的代码,然后才能继续渲染页面的剩余部分。因此,通常把<script>元素放到页面末尾,介于主内容之后及<body>标签之前。
- <noscript>,可以指定在浏览器不支持脚本时显示的内容。如果浏览器支持脚本,那么<noscript>中的任何内容都不会被渲染。
<------------P20-------------->结束了。