理解javascript
DOM树中子节点包含在父节点中,点击子节点至关于同时点击了子节点与父节点,与父节点的父节点,最终的根节点就是document和windows。前端
事件从触发点开始,逐层向上传递的过程就是冒泡java
阻止冒泡es6
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancelBubble = true;
};
复制代码
event.target == event.currentTarget
复制代码
判断一下点击的是不是当前节点。json
这个方法的缺点是:须要处理的节点多的时候重复代码多,效率低。windows
javascript的return false只会阻止默认行为,而使用jQuery的话则既阻止默认行为又防止对象冒泡。性能优化
原生js,只会阻止默认行为,不会中止冒泡bash
参考一下:异步
前端性能优化方案?前端性能
flex布局 百分比 rem
复制代码
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异步方案
箭头函数的最大的好处是什么
箭头函数内部的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
复制代码
再面再总结。。。