html

86 阅读3分钟

html

src和href的区别

  • href用在a等元素上,src用在img,iframe,script上
  • 请求资源类型不同:src指向具体的资源下载并应用到文档中,href用来建立当前元素和文档之间的连接
  • 解析浏览器方式不同:src再浏览器中被解析到会暂停其他资源的下载和处理,并把该资源加载编译完成;href在文档中进行添加时,浏览器会识别到这个文档并命名为css文件,会下载合并资源,同时不会停止对当前文档的处理。

link和@import区别

link不会影响页面其他资源的解析,

相同:都是外部引用css的方式

不同:

  • lik是xhtml标签,可以加载除了css外的其他事务;@import只能加载css
  • link引用css时和页面同时加载;@import需要页面完全加载后加载
  • link时chtml标签,无兼容问题;@import时css2.1提出的,低版本浏览器不支持

defer和async区别

  • async,js加载和执行并行进行(异步),多个js文件加载顺序不会按照书写顺序进行。
  • defer加载也是异步加载js文件,但是js要在所有元素解析完成后执行,domContentLoaded事件触发之前完成,多个defer会按照顺序加载。

总结:async和defer都是异步加载的,async多个js加载不按顺序进行,defer多个js加载按照顺序进行并且会在元素解析完成后执行,页面domContentLoaded事件触发之前完成。

js延迟脚本

async和defer

动态创建dom方式,文档加载完成后再动态的创建script标签来引入js脚本

使用settimeout延迟方法,设置定时器来延迟加载js脚本文件。

让js最后加载,将js脚本放在文档底部,来使js脚本尽可能的再最后来加载执行。

DomContentLoaded和load区别

DomContentLoaded:文档被完全加载和解析完后触发,不等待样式表、图像和子框架的完成加载。

load:页面元素全部都加载完成后触发。

html页面加载和解析流程

  • 浏览器遇到link标签,发起请求,服务端返会链接的外部文件,开始渲染页面
  • 遇到img标签,请求img资源,不等图片下载完,继续渲染后面的代码。
  • 服务器返回图片,重新渲染页面
  • 遇到js代码,下载好后直接运行,js中又影响布局的代码,浏览器重新渲染页面;

DOM和CSSom树的构建和渲染

  • 下载html页面
  • 加载其他静态资源
  • 构建dom树
  • 构建cssom树
  • 渲染树(dom+cssom)
  • 布局计算
  • 渲染页面

dom和bom

文档对象模型和浏览器对象模型。

文档对象模型:定义处理网页的内容的方法和接口,核心是document,是window的子对象

浏览器对象模型:把浏览器当作对象,定义与浏览器进行交互的方法和接口。核心是window。

window对象含有location对象、navigator对象、screen对象等

escap、encodeURI、encodeURIComponent区别

  • encodeURI对挣个uri进行转义
  • encodeURIComponent会对url中的特殊字符进行转义
  • escap和encodeURI区别,对于unicode编码为0xff之外字符会有区别,escape直接在字符的unicode编码前加上%u,encodeURI会将字符转换为utf-8的格式,再在每个字节前加%
  • uri中的特殊字符+ 空格 = & % # / ?www.baidu.com?tab=aaa&tabName=bbb www.baidu.com/#/home