前端面试题及答案整理(二)(2)

两者的区别在于优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。

8 说出遇到的浏览器兼容问题
•不同浏览器中显示的内边距、外边距不同,如ul标签在FireFox中默认是有padding值的,而在IE中只有margin有值

利用CSS Reset(参见第5条)
•IE6的双倍边距BUG,在块级元素浮动后本来外边距10px,但IE解释为20px

将其该块级元素display设置为inline
•IE6中不支持min-height

min-height的作用是作用是当容器的内容较少时,能保持一个最小的高度,以免破坏了布局或UI设计效果。而当容器内的内容增加的时候,容器能够自动的伸展以适应内容的变化。

通过这种下面的方式可以解决:

#targetDom{ background:#ccc; min-height:100px; height:auto!important; height:100px; overflow:visible; }

•在标准的事件绑定中绑定事件的方法函数为addEventListener,而IE使用的是attachEvent

通过条件判断分别写两条绑定语句或者使用jquery这类web框架库绑定。
•标准浏览器采用事件捕获的方式,而IE采用的是事件冒泡机制

后来标准认为冒泡更合理,利用设置addEventListener第三个参数兼容两种机制,事件冒泡为默认值。
•事件处理中的event属性IE中获取方式和标准浏览器不同

标准浏览器是作为参数带入,而ie是window.event方式获得,获得目标元素ie为e.srcElement 标准浏览器为e.target

Part2 其它

1 了解常用http状态码

200 OK 一切正常,对GET和POST请求的应答文档跟在后面。

201 Created服务器已经创建了文档,Location头给出了它的URL。

202 Accepted 已经接受请求,但处理尚未完成。

304 Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告 诉客户,原来缓冲的文档还可以继续使用。

400 Bad Request 请求出现语法错误。

404 Not Found 无法找到指定位置的资源。这也是一个常用的应答。

405 Method Not Allowed 请求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)对指定的资源不适用。(HTTP 1.1新)

500 Internal Server Error 服务器遇到了意料不到的情况,不能完成客户的请求。

502 Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。

2 手写ajax请求

//在IE5和IE6中模拟XMLHttpRequest方法 if(window.XMLHttpRequest === undefined){ window.XMLHttpRequest = function(){ try{ return new ActiveXObject("Msxml2.XMLHttp.6.0"); //可用,使用最新ActiveX对象 } catch(e1){ try{ return new ActiveXObject("Msxml2.XMLHttp.3.0");//不可用,退后更早的版本 } catch(e2){ throw new Error("XMLHttpRequest is not supported"); } } } } //get请求 function xhrGet(url,callback){ var request = new XMLHttpRequest(); request.open('GET',url,true); request.onreadystatechange = function(){ if(request.readyState === 4 && request.status == 200){ callback&&callback(request.responseText); } }; request.send(null); } //post请求 function xhrPost(url,data,callback){ var request = new XMLHttpRequest(); request.open('POST',url,true); request.setRequestHeader('Content-Type','application/json'); request.onreadystatechange = function(){ if(request.readyState === 4 && request.status == 200){ callback&&callback(request); } }; request.send(JSON.stringfy(data)); }

这是XMLHttpRequest传统的用法,XMLHttpRequest Level 2提出了很多新的方法,我们常提到的CORS也是源自该方法。


要了解详细XHR2推荐 XMLHttpRequest Level 2 使用指南

3 跨域问题

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzffgy.html