20170219am js

1、js数组去重。

2、js如何获取浏览器UA(user agent用户代理)。

UA用于服务器识别浏览器的版本信息,从而给对应的浏览器版本发送电脑版或手机版页面信息。

<!doctype  html>

<html>

<head>

<meta charset="UTF-8">

<title>balabala</title>

</head>

<body  οnlοad="myBrowser()">

<table  border>

<form  name="Browser">

<tr>

<td>浏览器名称:</td>

<td><input  name="Name"  type="txt"  size="110%"></td>

</tr>

<tr>

<td>版本号:</td>

<td><input  name="Version"  type="txt"  size="110%"></td>

</tr>

<tr>

<td>代码名称:</td>

<td><input  name="Code"  type="txt"  size="110%"></td>

</tr>

<tr>

<td>用户代理标识:</td>

<td><input  name="Agent"  type="txt"  size="110%"></td>

</tr>

</form>

</table>

<script >

function  myBrowser(){

document.Browser.Name.value = navigator.appName;

document.Browser.Version.value = navigator.appVersion;

document.Browser.Code.value = navigator.appCode;

document.Browser.Agent.value = navigator.userAgent;

}

</script>

</body>

</html>


3、重绘(repaint),重排(reflow),网站重构。

解析html--->构建Dom树--->二者共同构建渲染树---->绘制页面

                          解析css----->


重排:渲染树的一部分必须要更新,且节点的尺寸发生了改变。就会触发重排。更影响性能。

          1、添加或删除Dom元素

           2、元素尺寸位置内容改变

         3、元素位置,浏览器窗口改变

重绘:部分节点需要更新,但并没有改变节点形状,比如改变了背景颜色。触发重绘。

网站重构:不改变外部行为情况下,简化结构,增加可读性,提升用户体验。

通常是:1、table换成div+css

<div  class="table">

<div  class="table-tr">

<div  class="table-td">北京</div>

<div  class="table-td">深圳</div>

<div  class="table-td">大连</div>

</div>

</div>

.table{display:table;height:   border:..........}

.table-tr{display:table-row.....................}

.table-td{display:table-cell........................}

2、针对移动平台,SEO的优化

3、兼容现代浏览器

4、增加用户体验。

4、js对象的深克隆。????????????????????

点击打开链接

链接:https://www.nowcoder.com/ta/front-end-interview/review?page=71
来源:牛客网

function  clone(Obj) {
    var  buf;   
    if  (Obj instanceof  Array) {
        buf = [];   // 创建一个空的数组
        var  i = Obj.length;
        while  (i--) {
            buf[i] = clone(Obj[i]);
        }
        return  buf;
    } else  if  (Obj instanceof  Object){
        buf = {};   // 创建一个空对象
        for  ( var  k in  Obj) {   // 为这个对象添加新的属性
            buf[k] = clone(Obj[k]);
        }
        return  buf;
    } else {
        return  Obj;
    }
}
5、Ajax 是什么?Ajax 的交互模型?同步和异步的区别?如何解决跨域问题?


Ajax 是什么:
1. 通过异步模式,提升了用户体验
2. 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用
3. Ajax 在客户端运行,承担了一部分本来由服务器承担的工作,减少了大用户量下的服务器负载。

Ajax 的最大的特点:
1. Ajax可以实现动态不刷新(局部刷新)
2. readyState 属性 状态 有5个可取值: 0 = 未初始化,1 = 启动, 2 = 发送,3 = 接收,4 = 完成

Ajax 同步和异步的区别:
1. 同步:提交请求 -> 等待服务器处理 -> 处理完毕返回,这个期间客户端浏览器不能干任何事
2. 异步:请求通过事件触发 -> 服务器处理(这是浏览器仍然可以作其他事情)-> 处理完毕
ajax.open方法中,第3个参数是设同步或者异步。

Ajax 的缺点:
1. Ajax 不支持浏览器 back 按钮
2. 安全问题 Ajax 暴露了与服务器交互的细节
3. 对搜索引擎的支持比较弱
4. 破坏了程序的异常机制
5. 不容易调试

解决跨域问题:
1. jsonp
2. iframe
3. window.name、window.postMessage
4. 服务器上设置代理页面

6、事件、ie和firefox的事件机制、冒泡、捕获。
事件:在网页中的某个操作。
事件机制:ie只支持事件冒泡,火狐同时支持二者。
冒泡:触发子类的事件,父类的同类事件均会被触发。子集元素先被触发,然后触发父级元素。
怎么阻止冒泡:两种方法:
1、event.stopPropagation。阻止向上冒泡,不阻止默认事件。
$("#tfs").click(function(event){
event.stopPropagation();//如果tfs表达的是一个a标签,则该句仅仅阻止其向上冒泡,但不阻止打开a标签里的链接
})
2、return  false。既阻止向上冒泡,又阻止默认事件。
3、event.cancleBubble = true;//ie阻止冒泡
$("#tfs").click(function(event){
return  false;//不仅阻止冒泡,并且阻止打开链接。
})
捕获:父级元素先触发,子集元素后触发。
w3c:任何事件发生时,先捕获,后冒泡。
zepto的tap事件点透:由于click延迟300ms,上层元素隐藏或消失后,同样位置的Dom元素触发了click。所以移动端用tap代替click。
注:
zepto是jQuery的轻量级替代品。
tap事件:用户轻击一个元素时触发。
$("#tfs").on("tap",function(){
$(this).hide();
})
防止点透:1、引入fastclick
$(function){
FastClick.attach(document.body);
}
2、延迟300ms再处理事件
$("#tfs").on("tap",function(event){
setTimeOut(function(){
balabala
},300)
})
3、event.preventDefault();阻止默认行为。
注:setTimeout只执行代码一次,clearTimeout。setTimeout后边的时间最小是4ms,若小于该值,则系统都会将其转换成4ms。
setInterval执行多次,clearInterval。
由于js是单线程的,等300ms一到,就把setTimeout或者setInterval里的code放到js的执行队列的尾部,而不是300ms之后就执行该code。
另:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值