js冒泡
-
理解
DOM树中子节点包含在父节点中,点击子节点相当于同时点击了子节点与父节点,与父节点的父节点,最终的根节点就是document和windows。
事件从触发点开始,逐层向上传递的过程就是冒泡
-
阻止冒泡
- 阻止默认行为
if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble = true; };- 或者,不阻止冒泡过程,修改执行的函数方法:
event.target == event.currentTarget判断一下点击的是否是当前节点。
这个方法的缺点是:需要处理的节点多的时候重复代码多,效率低。
- jq的return false
javascript的return false只会阻止默认行为,而使用jQuery的话则既阻止默认行为又防止对象冒泡。
原生js,只会阻止默认行为,不会停止冒泡
前端的性能优化
参考一下:
页面适配有那些方法
flex布局 百分比 rem
ie兼容问题
-
ie7
overflow:hidden;失效是因为子元素有定位,解决办法是给父元素加定位样式;
-
ie下input点击有边框
-
设置按钮为none,然后在按钮外面套一层来实现边框的效果
-
或者input { filter:chroma(color=#000000); }
注:因为ietest中没有滤镜功能,所以不能在这个软件里测试效果
-
-
IE6 IE7 IE8(Q) 不支持JSON.parse()
JSON.parse() 方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象。提供可选的reviver函数用以在返回之前对所得到的对象执行变换(操作)。
问题:使用了 JSON 对象的脚本代码在 IE6 IE7 IE8(Q) 中运行的时候可能会抛出异常,导致功能失效。
解决:使用eval和new Function方式代替json.parse
//使用两种简单的方式解析 JSON 格式字符串
json1 = eval("(" + jsonStr + ")")
json2 = (new Function("return " + jsonStr))();
-
CSS hack
js异步的方法
参考一下: js异步方案
es6
-
箭头函数的最大的好处是什么
箭头函数内部的this是词法作用域,由上下文确定;
箭头函数完全修复了this的指向,this总是指向词法作用域,也就是外层调用者obj:
原来:
var obj = { birth: 1990, getAge: function () { var b = this.birth; // 1990 var fn = function () { return new Date().getFullYear() - this.birth; // this指向window或undefined }; return fn(); } };箭头函数:
var obj = { birth: 1990, getAge: function () { var b = this.birth; // 1990 var fn = () => new Date().getFullYear() - this.birth; // this指向obj对象 return fn(); } }; obj.getAge(); // 25
再面再总结。。。