理解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
複製代碼
再面再總結。。。