一胧弛、事件
1.編寫一個通用的事件監(jiān)聽函數(shù)
1 function bindEvent(elem, type, selector, fn) {
2 if(fn == null) {
3 fn = selector
4 selector = null
5 }
6 elem.addEventListener(type,function(e) {
7 var target
8 if(selector) {
9 target = e.target
10 if(target.matches(selector)) {
11 fn.call(target, e)
12 }
13 } else {
14 fn(e)
15 }
16 })
17 }
2.事件冒泡流程
1)DOM樹形結構
2)事件冒泡
3)阻止冒泡
4)冒泡的應用
3.對一個無限下拉加載圖片的頁面,如何給每一個圖片綁定事件楚殿?
使用代理
二撮慨、ajax
1.手動編寫一個ajax,不依賴第三方庫
(無論什么復雜的ajax的封裝脆粥,都是依照這個原理形式做的)
1 var xhr = new XMLHttpRequest()
2 xhr.open("GET","/api",false)
3 xhr.onreadystatechange = function(){
4 if(xhr.readyState == 4 && xhr.status == 200) {
5 alert(xhr.responseText)
6 }
7 }
8 xhr.send(null)
<pre>readyState == 0 ∑瞿纭(未初始化),還沒調用send()方法
1 ”涓簟(載入)规伐,已調用send()方法,正在發(fā)送
2 ∠辉怠(載入完成)猖闪,send()方法執(zhí)行完成,已經(jīng)接受到全部形影內(nèi)容
3 〖〕(交互)培慌,正在解析相應內(nèi)容
4 (完成)柑爸,響應內(nèi)容解析完成吵护,可以在客戶端調用</pre>
status == 2xx - 表示成功處理請求,如200
3xx - 需要重定向,瀏覽器直接跳轉
4xx - 客戶端請求錯誤何址,如404
5xx - 服務器端錯誤里逆,如504(服務端連接數(shù)據(jù)庫超時)
2.跨域
有三個標簽允許跨域加載資源:<img src="xxx" > <link href="xxx" /> <script src="xxx"></script>
解決跨域方法:
1)JSONP實現(xiàn)原理
服務器可以根據(jù)請求動態(tài)生成一個不存在的文件返回
window.callback = function(data) {
//這是我們跨域得到信息
console.log(data)
}
2)服務器端設置http header
另外一個解決跨域的解決方法需要服務器來完成
1 //不同的后盾語言的寫法可能不一樣
2
3 //第二個參數(shù)填寫允許跨域的域名城,不建議直接寫*
4 response.setHeader("Access-Control-Allow-Origin", "http://a.com,http://b.com");
5 response.setHeader("Access-Control-Allow-Headers", "X-Requested-With");
6 response.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
7
8 //接受跨域的cookie
9 response.setHeader("Access-Control-Allow-Credentials", "true");
三用爪、存儲
1.cookie,sessionStorage和localStorage的區(qū)別
1)容量:cookie只有4kb原押,而sessionStorage和localStorage最大容量5M
2)是否會攜帶到ajax中:cookie每次都會帶,而sessionStorage和localStorage不會
3)API易用性:cookie要自己封裝且較麻煩偎血,而sessionStorage和localStorage诸衔,getItem,setItem基本上就能搞定