DOM 事件被髮送用於通知代碼相關的事情已經發生了。html
每一個事件都是繼承自Event 類的對象,能夠包括自定義的成員屬性及函數用於獲取事件發生時相關的更多信息。node
事件能夠表示從基本用戶交互到渲染模型中發生的事件的自動通知的全部內容。es6
參考:https://developer.mozilla.org...web
Animation | 動畫 |
Canvas | 畫布 |
Clipboard | 剪貼板 |
Control | 控制 |
DOM Mutation | DOM突變 |
Device | 設備 |
Drag / drop | 拖放 |
Geolocation | 地理位置 |
Keyboard | 鍵盤 |
Load | 加載 |
Media | 媒體 |
Mouse | 鼠標 |
Notification | 通知 |
Parse | 解析 |
Picture-in-Picture | 字母畫面 |
Pointer | 指針 |
Script | 腳本 |
Timer | 計時器 |
Touch | 觸摸 |
WebAudio | web音頻 |
Window | 窗口 |
Worker | 工人 |
XHR | XMLHttpRequest對象 |
(1)改變html輸出流 (2)尋找元素 經過id尋找元素 經過標籤名尋找元素 (3)改變html內容 使用屬性:innerHTML (4)改變html屬性 使用屬性:attribute
(1)addEventListener 方法用於向指定元素添加時間句柄 (2)removeEventListener 移除添加的事件句柄 附:可添加多個句柄,句柄之間不會覆蓋 mouseover、mouseout事件
(1)事件流 描述的是在頁面中接受事件的順序 (2)事件冒泡(false) 由最具體(最內層)的元素接收,而後逐級向上傳播至不具體的節點(甚至文檔) (3)事件捕獲(true) 最不具體的節點先接收事件,而最具體的節點應該是最後接收事件
(1)html事件處理 直接添加在html結構中 缺點:可能須要修改多處 (2)DOM 0級事件處理 把一個函數賦值給另外一個事件處理程序屬性, 例:`var btn1 = document.getElementById("wer").onclick = function()` 注意:後面的函數會覆蓋以前的函數 (3)DOM 2級事件處理 addEventListener("事件名","事件處理函數","布爾值"); true:事件捕獲 false:事件冒泡 removeEventListener(); 同0級事件處理相比它不會覆蓋以前的事件 (4)IE事件處理程序 attachEvent detachEvent 附:針對IE版本<=8的版本,同addEventListener、removeEventListener相似 click改成onclick便可
(1)事件對象 在觸發DOM事件時都會產生一個事件對象 (2)事件對象event 1)type:獲取事件類型 2)target:獲取事件目標 3)stopPropagation():阻止事件冒泡 4)preventDefault():阻止事件默認行爲
注:本身操做時出了不少問題,暫未解決,我認爲這部分知識可能發生了更新
JS中全部事物都是對象(內置對象:字符串、數組、函數......) 每一個對象都帶有屬性和方法,可自定義對象 建立方法: (1)new操做符 (對象的構造函數同函數同樣,而後new就行) (2)直接賦值(像構造函數同樣) (3)函數建立(函數名即對象名) String對象 方法: (1)indexOf() 查找字符串 (2)match() 內容匹配 (3)replace() 替換內容(2個參數) (4)大小寫轉換 toUpperCase() toLocaleLowerCase() (5)字符串轉數組split(","),參數表示轉換的根據 DATE日期對象 (1)得到方法new Date() (2)getFullYear()、getMonth()等等 注:getMonth或其餘某些函數從0開始計數,因此須要+1 Array數組對象 (1)建立 (2)訪問 (3)經常使用方法 a) concat()數組合並 b) sort()排序——升序、降序(奇葩方法) c) push()末尾追加元素 d) reverse()數據元素翻轉 Math對象 經常使用方法 (1)Math.round(3.8) 四捨五入 (2)Math.random()*8 從0到1*8隨機生成,可以使用parseInt(Math.random()*10)轉換爲int型 (3)min & max (4)abs()絕對值
(1)getElementsByTagName、getElementsByName同名標籤會一塊兒得到,存在對象裏 (2)getAttribute獲取當前元素的某個屬性 (3)setAttribute("","") 設置某個屬性(新屬性or已有的屬性) (4)var a=document.getElementsByTagName("ul")[0].childNodes;存在NodeList,類數組(不是一個數組) (5)獲取父節點 document.write(document.getElementById("divsp").parentNode.nodeName); (6)建立元素節點 document.createElement("button"); (7)appendChild往末尾追加節點 (8)insertBefore插入節點 (9)div.removeChild(div.childNodes[1]);刪除節點 (10)offsetHeight、scrollHeight獲取頁面尺寸
BOM(Browser Object Model)核心,指當前瀏覽器對象窗口 全部JS全局對象、函數、變量均爲window對象成員 例如全局變量位window屬性、全局函數爲window方法,甚至document也是其屬性之一
參考文章:https://juejin.im/post/5e9e9d...數組
window.innerWidth 瀏覽器窗口內部高度(不包含滾動條,意思是滾動條實際上是算在窗口裏面的) window.innerHeight(經本人親自檢驗,的確是瀏覽器內部窗口高度,也就是顯示網頁內容的地方)
window.open(); 打開新窗口(通常會被瀏覽器攔截) window.close(); 關閉當前窗口
(1)setInterval有固定的時間延遲循環調用函數 對應clearInterval(nIntervId);要取消的定時器的 ID。是由 setInterval() 返回的。 值得一提的是,所用的ID池setInterval()和setTimeout()共享, 這意味着你能夠在技術上使用clearInterval()和clearTimeout()互換。 可是,爲清楚起見,應避免這樣作。 (2)setTimeout在定時器到期後執行一個函數或指定的一段代碼 對應scope.clearTimeout(timeoutID) 您要取消的超時的標識符。此ID是經過對的相應調用返回的setTimeout()。 值得一提的是ID的池使用setTimeout()和setInterval()共享, 這意味着你能夠在技術上使用clearTimeout()和clearInterval()互換。 可是,爲清楚起見,應避免這樣作。
window.history對象包含瀏覽器的歷史(url)的集合 方法: (1)history.back(); (2)history.forward(); (3)history.go();
用於獲取當前頁面的地址(URL),並把瀏覽器從新定向到新的頁面。 屬性: (1)location.hostname返回web主機域名 (2)location.pathname返回檔期那文件的路徑和文件名 (3)location.port返回web主機端口 (4)location.protocol返回所使用的web協議(http或https) (5)location.href返回當前頁面的url (6)location.assign()加載新的文檔
window.screen對象包含有關用戶屏幕的信息 屬性: (1)screen.availHeight可用屏幕高度 (2)screen.availWidth可用屏幕寬度 (3)screen.Height屏幕高度 (4)screen.Width屏幕寬度
概念: (1)一切事物皆對象 (2)對象具備封裝性和繼承特性 (3)信息隱藏 建立: (1)直接命名賦值 (2)函數構造器
JS中不存在類(es6已經引入,實爲原型繼承的語法糖)的概念,但能夠使用function模擬類 注意原型鏈prototype的使用,以及類套類+(當即執行函數)閉包實現封裝 prototype 屬性使您有能力向對象添加屬性和方法 封裝以後能夠使用window賦值向外部提供一個引用的接口 無論方法仍是屬性直接賦值就能夠 例:`window.person = person;`