概述
概述
- JavaScript 可以查询和修改 DOM 与 CSSOM
- JavaScript 执行会阻止 CSSOM
- 除非将 JavaScript 显式声明为异步,否则它会阻止构建 DOM
例
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="style.css" rel="stylesheet">
<title>Critical Path: Script</title>
</head>
<body>
<p>Hello <span>web performance</span> students!</p>
<div><img src="awesome-photo.jpg"></div>
<script>
var span = document.getElementsByTagName('span')[0];
span.textContent = 'interactive'; // change DOM text content
span.style.display = 'inline'; // change CSSOM property
// create a new element, style it, and append it to the DOM
var loadTime = document.createElement('div');
loadTime.textContent = 'You loaded this page on: ' + new Date();
loadTime.style.color = 'blue';
document.body.appendChild(loadTime);
</script>
</body>
</html>
- JavaScript 允许我们进入 DOM 并拉取对隐藏的 span 节点的引用 - 该节点可能未出现在渲染树中,却仍然存在于 DOM 内。然后,在我们获得引用后,就可以更改其文本(通过 .textContent),甚至可以将其计算的 display 样式属性从“none”替换为“inline”。现在,我们的页面显示“Hello interactive students!”
- JavaScript 还允许我们在 DOM 中创建、样式化、追加和移除新元素。从技术上讲,我们的整个页面可以是一个大的 JavaScript 文件,此文件能够逐一创建元素并对其进行样式化。尽管这种方法可行,但是在实践中,使用 HTML 和 CSS 要简单得多。在 JavaScript 函数的第二部分,我们会创建一个新的 div 元素,设置其文本内容,对其进行样式化,然后将其追加到正文中
- 脚本在文档的何处插入,就在何处执行。当 HTML 解析器遇到一个 script 标记时,它会暂停构建 DOM,将控制权移交给 JavaScript 引擎;等 JavaScript 引擎运行完毕,浏览器会从中断的地方恢复 DOM 构建。
- 执行我们的内联脚本会阻止 DOM 构建,也就延缓了首次渲染
- 如果脚本执行的内容是修改尚未建立好的CSSOM,那么浏览器将延迟脚本执行和 DOM 构建,直至其完成 CSSOM 的下载和构建
- JavaScript 在 DOM、CSSOM 和 JavaScript 执行之间引入了大量新的依赖关系,从而可能导致浏览器在处理以及在屏幕上渲染网页时出现大幅延迟
- “优化关键渲染路径”在很大程度上是指了解和优化 HTML、CSS 和 JavaScript 之间的依赖关系谱
解析器阻止和异步Javascript
- 内联脚本始终会阻止解析器,除非您编写额外代码来推迟它们的执行
- 通过script标签引入的脚本,如果是外部 JavaScript 文件,浏览器必须停下来,等待从磁盘、缓存或远程服务器获取脚本,这就可能给关键渲染路径增加数十至数千毫秒的延迟
- 了解 async 和 await
最后
以上就是甜甜小蚂蚁为你收集整理的使用 Javascript 添加交互的全部内容,希望文章能够帮你解决使用 Javascript 添加交互所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复