13.1 JS和HTML的交互式如何實現的?
通過事件實現的
13.2什么是事件流?
描述的是從頁面中接收事件的順序。
13.3什么是事件冒泡?
事件開始時由最具體的元素接收,然后逐級向上傳播到較為不具體的節點;
13.4事件捕獲的目的是?
在事件到達預訂目標之前捕獲它
13.5DOM2級規定事件流三階段是?
事件捕獲階段、處于目標階段和事件冒泡階段。
13.6什么是事件?
用戶或瀏覽器自身執行的某種動作。
13.7在HTML中指定事件處理程序的缺點有?
一是存在時差;二是作用域鏈在不同瀏覽器會導致不同的結果;三是HTML與JS代碼緊密耦合;
13.8 DOM 2級事件定義的兩個方法和參數是?
addEventListener()和removeEventListener():要處理的事件名、作為事件處理程序的函數和一個布爾值(true表示在紗布或階段調用事件處理程序,false表示在冒泡階段調用事件處理程序);
13.9使用DOM 2級方法添加事件處理程序的好處是?
可以添加多個事件處理程序。
13.10為何多數時候,將事件處理程序添加到事件流的冒泡階段?何時添加到捕獲階段?
因為這樣可以最大限度地兼容各種瀏覽器;
只在需要在事件到達目標前截獲他的時候將事件處理程序添加到捕獲階段。
13.11IE中使用attachEvent與使用DOM 0級方法的主要區別是?
事件處理程序的作用域,前者會在全局作用域,后者會在元素作用域內運行。
13.12使用addEventListener()和attachEvent()添加的匿名函數共同存在的問題是?
不能移除
13.13事件對象包含什么?
事件元素、類型和其他與特定事件相關的信息。
13.14如何理解事件對象的存活期?
在事件處理程序執行期間存在,執行結束就被銷毀。
13.15web瀏覽器中的事件類型有?
UI事件、焦點、鼠標、滾輪、文本、鍵盤、合成、變動和變動名稱等事件。
13.16為何在JS中添加到頁面上的事件處理程序數量將直接關系到頁面的整體運行性能?
一是函數都是對象,對象會占內存,內存中對象越多,性能越差;
二是必須制定所有事件的處理程序而導致的DOM訪問次數,會延遲整個頁面的交互就緒時間;
13.17從利用好事件處理程序的角度出發,有什么方法可以提升性能?
限制數量、事件委托、移除事件處理程序
14.1獲取<form>元素引用的方式有?
一是看成與其他元素一樣,使用getElementById等方法獲取;
二是通過document.forms獲取頁面所有的表單;
14.2提交表單可能出現的最大問題是?如何解決?
重復提交表單;一是第一次提交表單后就禁用提交按鈕;二是利用onsubmit事件處理程序取消后續的表單提交操作。
14.3為何在處理文本框的值時,最好不要使用DOM方法?
對value屬性所做的修改,不一定會反映在DOM中。
14.4表單序列化在什么場景下使用最多?
使用Ajax請求
15.1出現在<canvas>元素開始和結束標簽中的內容何時顯示?
在瀏覽器不支持<canvas>元素時顯示。
15.2在使用<canvas>元素之前需要干啥?
檢測getContext()方法是否存在。