美文网首页前端开发那些事儿
Javascript常见问题(四)

Javascript常见问题(四)

作者: small_zeo | 来源:发表于2021-07-18 19:04 被阅读0次

一. DOM加载过程

在浏览器地址栏输入url,DNS域名解析,找到IP,向服务器发起请求,服务器返回数据,浏览器接收二进制文件。浏览器将二进制文件转换为html,构建DOM树。

  1. HTML解析器
    解析过程:
  • 遇到link的外部css,遇到css的代码会进行css的加载;
  • 遇到script标签会先去执行js的内容,直至脚本完成执行,然后继续构建DOM;
  • 解析器遇到设置了async属性的script时,开始下载脚本并继续解析文档,脚本会在下载完成后尽快执行,但是解析起不会停下来等它下载,不会影响到后续DOM的渲染;
  • 如果有设置了defer的script标签存在,则会按照顺序执行所有的script,defer脚本会在文档渲染完毕后,DOMContentLoaded事件调用前执行,脚本会被延迟到整个页面都解析完毕后再运行。
  1. CSS解析器:
    每个css文件解析为样式表对象CSSStyleSheet,每个对象都包含CSSRule,CSSRule包含选择器和声明对象,以及其他与CSS语法对应的对象
  2. 构建render树:DOM树 + CSS树
  3. 布局layout与绘制paint:
    计算对象之间的大小,距离确定每个节点在屏幕上的确切坐标,映射浏览器屏幕绘制,使用UI后端层绘制每个节点;
  • reflow(回流):当元素属性发生改变并影响布局时(宽度,高度,内外边距等),产生回流,相当于刷新页面
  • repaint(重绘):当元素属性发生改变且不影响布局(背景色,字体样式等),产生重绘不一样引起回流,回流一定引起重绘。
了解DOM加载过程可以更好地知道如何web性能优化,比如如何有效地避免reflow回流

二. history和location注意事项

1. window.history属性指向History对象,它表示当前窗口的浏览历史
  • History.back() 浏览器回退
  • History.forward() 浏览器前进
  • History.go(val) // 可加载历史列表中的某个具体的页面(val: -1上一个页面,1前进一个页面)
  • History.pushState() // 向当前浏览器会话的历史堆栈中添加一个状态
  • History.replaceState() //修改当前历史记录实体
2. Location 对象window.location和document.location属性,可以拿到这个对象
  • Location.href 整个URL
  • Location.protocal 当前URL的协议
  • Location.host 主机
  • Location.hostname 主机名
  • Location.port 端口号
  • Location.pathname URL的路径部分,从根路径开始
  • Location.search 查询字符串部分
  • Location.hash 片段字符串部分,从#开始
  • Location.username 域名前面的用户名
  • Location.password 域名前面的密码

相关文章

  • Javascript常见问题(四)

    一. DOM加载过程 在浏览器地址栏输入url,DNS域名解析,找到IP,向服务器发起请求,服务器返回数据,浏览器...

  • IPTV用户行为数据采集说明文档

    一、说明 该文档定义IPTV用户行为数据采集,由统一 二、无埋点采集 三、JavaScript 快速使用 四、常见问题

  • web前端常见面试题

    面试常见问题总结 JavaScript 原型 数据存储 : 堆栈 深拷贝 数组去重 null undefined...

  • JavaScript常见问题

    location对象使用 网页重定向 获取项目的根url Cookies基本用法 存基本数据,kiddvar na...

  • Javascript常见问题(一)

    1.typeof 和 instanceof检测数据类型有哪些异同 首先我们先要了解js有哪些数据类型?原始类型(基...

  • Javascript常见问题(二)

    1. js舍入误差 解决方案:方案1. parseFloat((0.1 + 0.2).toFiexed(2)) ...

  • Javascript常见问题(三)

    一. sort是如何排序的,如何解决sort排序的问题? arr2使用sort排序结果错误了,什么原因?js在计...

  • 049|JavaScript Array常用方法

    Array作为JavaScript中的高频使用对象,拥有十分丰富的方法,能够帮助我们快速处理常见问题。 这一节中,...

  • (四)JavaScript——;

    在(一)JavaScript——变量这篇文章最后我曾经问过自己一个问题——还有;这个东西是干什么用的那? 很明显它...

  • JavaScript(四)

    一、表单的获取方式1.document.getElementById()2.document.forms[inde...

网友评论

    本文标题:Javascript常见问题(四)

    本文链接:https://www.haomeiwen.com/subject/teyapltx.html