HTML5 面试题~经验(二)
//联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄
一、概念
1、如何实现浏览器内多个标签页之间的通信?
答案解析:调用localstorge、cookies等本地存储方式
2、IE和DOM事件流的区别
1)执行顺序不一样
2)参数不一样
3)事件加不加on
4)this指向问题
3、sessionStorage和localStorage的区别,以及cookes和web storage的区别
答:sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
4、IE6双边距bug:
块属性标签float后,又有横行的 margin 情况下,在 IE6 显示 margin 比设置的大。
浮动IE产生的双倍距离 #box{float:left;width:10px;margin:0 0 0 100px;}
这种情况下IE6会产生200px的距离。
解决方法:加上_display:inline,使浮动忽略
5、Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?
答案解析:
1)声明位于文档中的最前面,处于标签之前。告知浏览器的解析器,用什么文档类型规范来解析这个文档。
2)严格模式的排版和JS运作模式是以该浏览器支持的最高标准运行。
3)在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。
4)DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现。
6、闭包
由于函数内部定义变量作用域问题,如果外部想用这个内部函数创建的一个变量;那就需要在这个函数内部在创建一个函数,创建的这个函数相当于一个桥梁把内部外部函数的变量抛出,这样就解决了不能访问这个变量的问题,那这个内部函数就称为闭包。
闭包的特性:
a.函数内再嵌套函数
b.内部函数可以引用外层的参数和变量
c.参数和变量不会被垃圾回收机制回收
概括的说,闭包就是能够读取其他函数内部变量的函数,在本质上,它是将函数内部和函数外部连接起来的一座桥梁。
7、简述一下你对HTML语义化的理解?
答案解析:
1)用正确的标签做正确的事情;
2)html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;
3)即使在没有样式css情况下也以一种文档格式显示,并且是容易阅读的;
4)搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO;
5)使于都源代码的人对网站更容易将网站分块,便于阅读维护理解。
8、浏览器加载过程
浏览器接收到html代码,可能是一份完整的文档,也可能是一个chunk,即开始解析。解析过程是先构建dom树,再根据dom树构建渲染树,渲染树根据渲染树就会绘制到浏览器上。
构建dom树的过程即根据html代码自上而下构建dom树,当遇到script文件加载/执行会阻塞后面dom树的构建(javascript可能会改变dom树),而遇到css文件则会阻塞渲染树的构建,即dom树依然继续构建(除非遇到script标签并且css文件依旧未加载完成),但不会渲染绘制到页面上。
而无论哪个阻塞,该加载的文件还是会加载,例如html文档中的其他css/js/图片文件。至于javascript被加载后就会被执行,执行的过程也阻塞树的构建。是执行完了才解析其他内容,而不是执行完了才加载其他内容。