爱收集资源网

新研究发现,睡前手机使用会导致什么后果?

网络整理 2023-09-30 07:00

1.link标签定义是哪些?

a.link标签定义文档与外部资源的关系。link元素是空元素,它仅包含属性。此元素只能存在于head部份,不过它可出现任何次数。

b.link标签中的rel属性定义了当前文档与被链接文档之间的关系。

c.常见的stylesheet指的是定义一个外部加载的款式表。

2.link和@import的区别是哪些?

(1)从属关系区别。@import是CSS提供的句型规则,只有导出式样表的作用;link是html提供的标签,除了可以加载CSS文件,还可以定义RSS、rel联接属性、引入网站图标等。

(2)加载次序区别。加载页面时,link标签引入的CSS被同时加载;@import引入的CSS将在页面加载完毕后被加载。

(3)兼容性区别。@import是CSS2.1才有的句型,故只可在IE5能够辨识;link标签作为HTML元素,不存在兼容性问题。

(4)DOM可控性区别。可以通过JS操作DOM,插入link标签来改变款式;因为DOM方式是基于文档的,难以使用@import的形式插入款式。

3.聊聊你对浏览器的理解?

浏览器的主要功能是将用户选择的web资源呈现下来,它须要从服务器恳求资源,并将其显示在浏览器窗口中,资源的格式一般是HTML,也包括PDF、image及其他格式。用户用URI(UniformResourceIdentifier统一资源标示符)来指定所恳求资源的位置。HTML和CSS规范中规定了浏览器解释html文档的形式,由W3C组织对这种规范进行维护,W3C是负责拟定web标准的组织。并且浏览器厂商纷纷开发自己的扩充,对规范的遵守并不健全,这为web开发者带来了严重的兼容性问题。

简单来说浏览器可以分为两部份,shell和内核。其中shell的种类相对比较多,内核则比较少。shell是指浏览器的壳体:比如菜单,工具栏等。主要是提供给用户界面操作,参数设置等等。

它是调用内核来实现各类功能的。内核才是浏览器的核心。内核是基于标记语言显示内容的程序或模块。也有一些浏览器并不分辨壳体和内核。从Mozilla将Gecko独立下来后,才有了壳体和内核的明晰界定。

4.聊聊你对浏览器内核的理解?

主要分成两部份:渲染引擎和JS引擎。

渲染引擎的职责就是渲染,即在浏览器窗口中显示所恳求的内容。

默认情况下,渲染引擎可以显示html、xml文档及图片,它也可以利用插件(一种浏览器扩充)显示其他类型数据,比如使用PDF阅读器插件,可以显示PDF格式。

JS引擎:解析和执行javascript来实现网页的动态疗效。最开始渲染引擎和JS引擎并没有分辨的很明晰,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。

5.常见的浏览器内核比较和区别是哪些?

Trident:这些浏览器内核是IE浏览器用的内核,由于在初期IE占有大量的市场份额,所以这些内核比较流行,曾经有好多网页也是依照这个内核的标准来编撰的,并且实际上这个内核对真正的网页标准支持不是挺好。并且因为IE的高市场占有率,谷歌也很长时间没有更新Trident内核,就造成了Trident内核和W3C标准相悖。还有就是Trident内核的大量Bug等安全问题没有得到解决,加上一些专家学者公开自己觉得IE浏览器不安全的观点,使好多用户开始转向其他浏览器。Gecko:这是Firefox和Flock所采用的内核,这个内核的优点就是功能强悍、丰富,可以支持好多复杂网页疗效和浏览器扩充插口,而且代价是也显而易见就是要消耗好多的资源,例如显存。

Presto:Opera以前采用的就是Presto内核,Presto内核被称为公认的浏览网页速率最快的内核,这得益于它在开发时的天生优势,在处理JS脚本等脚本语言时,会比其他的内核快3倍左右,缺点就是为了达到很快的速率而扔掉了一部份网页兼容性。

WebKit:Webkit是Safari采用的内核,它的优点就是网页浏览速率较快,尽管不及Presto并且也胜过Gecko和Trident,缺点是对于网页代码的容错性不高,也就是说对网页代码的兼容性较低,会使一些编撰不标准的网页未能正确显示。WebKit前身是KDE小组的KHTML引擎,可以说WebKit是KHTML的一个开源的分支。

Blink:微软在ChromiumBlog上发表博客,称将与苹果的开源浏览器核心Webkit分道扬镳,在Chromium项目中研制Blink渲染引擎(即浏览器核心),外置于Chrome浏览器之中。虽然Blink引擎就是Webkit的一个分支,如同webkit是KHTML的分支一样。Blink引擎如今是微软公司与OperaSoftware共同研制,里面提及过的,Opera弃用了自己的Presto内核,加入Google阵营,追随微软一起研制Blink。

6.聊聊浏览器的区别是哪些?

(1)IE浏览器内核:Trident内核,也是也称的IE内核;

(2)Chrome浏览器内核:也称为Chromium内核或Chrome内核,曾经是Webkit内核,如今是Blink内核;

(3)Firefox浏览器内核:Gecko内核,也称Firefox内核;

(4)Safari浏览器内核:Webkit内核;

(5)Opera浏览器内核:最初是自己的Presto内核,后来加入微软大军,从Webkit又到了Blink内核;

(6)360浏览器、猎豹浏览器内核:IEChrome双内核;

(7)搜狗、遨游、QQ浏览器内核:Trident(兼容模式)Webkit(高速模式);

(8)百度浏览器、世界之窗内核:IE内核;

(9)2345浏览器内核:似乎曾经是IE内核,如今也是IEChrome双内核了;

(10)UC浏览器内核:这个众口不一,UC说是她们自己研制的U3内核,但似乎还是基于Webkit和Trident,还有说是基于傲游内核。

7.浏览器的渲染原理是哪些?

(1)首先解析收到的文档,按照文档定义建立一棵DOM树,DOM树是由DOM元素及属性节点组成的。

(2)之后对CSS进行解析,生成CSSOM规则树。

(3)按照DOM树和CSSOM规则树建立渲染树。渲染树的节点被称为渲染对象,渲染对象是一个包含有颜色和大小等属性的圆形,渲染对象和DOM元素相对应,但这些对应关系不是一对一的,不可见的DOM元素不会被插入渲染树。还有一些DOM元素对应几个可见对象,它们通常是一些具有复杂结构的元素,难以用一个方形来描述。(4)当渲染对象被创建并添加到树中,它们并没有位置和大小,所以当浏览器生成渲染树之后,才会依照渲染树来进行布局(也可以称作回流)。这一阶段浏览器要做的事情是要弄清楚各个节点在页面中的准确位置和大小。一般这一行为也被称为“自动重排”。

(5)布局阶段结束后是勾画阶段,遍历渲染树并调用渲染对象的paint方式将它们的内容显示在屏幕上,勾画使用UI基础组件。值得注意的是,这个过程是逐渐完成的,为了更好的用户体验,渲染引擎将会尽可能早的将内容呈现到屏幕上,并不会等到所有的html都解析完成以后再去建立和布局render树。它是解析完一部份内容就显示一部份内容,同时,可能还在通过网路下载其余内容。

8.渲染过程中遇见JS文件如何处理?(浏览器解析过程)

JavaScript的加载、解析与执行会阻塞文档的解析,也就是说,在建立DOM时,HTML解析器若碰到了JavaScript,这么它会暂停文档的解析,将控制权移交给JavaScript引擎,等JavaScript引擎运行完毕,浏览器再从中断的地方恢复继续解析文档。

也就是说,假如你想首屏渲染的越快,就越不应当在首屏就加载JS文件,这也是都建议将script标签置于body标签顶部的诱因。其实在当下,并不是说script标签必须放在顶部,由于你可以给script标签添加defer或则async属性。

9.async和defer的作用是哪些?有哪些区别?

(1)脚本没有defer或async,浏览器会立刻加载并执行指定的脚本,也就是说不等待后续载入的文档元素,读到就加载并执行。

(2)defer属性表示延后执行引入的JavaScript,即这段JavaScript加载时HTML并未停止解析,这两个过程是并行的。当整个document解析完毕后再执行脚本文件,在DOMContentLoaded风波触发之前完成。多个脚本按次序执行。

(3)async属性表示异步执行引入的JavaScript,与defer的区别在于,假如早已加载好,都会开始执行,也就是说它的执行一直会阻塞文档的解析,只是它的加载过程不会阻塞。多个脚本的执行次序难以保证。

10.哪些是文档的预解析?

Webkit和Firefox都做了这个优化,当执行JavaScript脚本时,另一个线程解析剩下的文档,并加载前面须要通过网路加载的资源。这些方法可以使资源并行加载进而使整体速度更快。须要注意的是,预解析并不改变DOM树,它将这个工作留给主解析过程,自己只解析外部资源的引用,例如外部脚本、样式表及图片。

浏览器兼容性问题面试