四、DOM擴(kuò)展
1、獲取元素
①document.getElementsByClassName ('class') 通過類名獲取元素,以偽數(shù)組形式存在。
②document.querySelector('selector') 通過CSS選擇器獲取元素,符合匹配條件的第1個(gè)元素。
③document.querySelectorAll('selector') 通過CSS選擇器獲取元素,以偽數(shù)組形式存在。
2、類名操作
①Node.classList.add('class') 添加class
②Node.classList.remove('class') 移除class
③Node.classList.toggle('class') 切換class,有則移除,無則添加
④Node.classList.contains('class') 檢測是否存在class
Node指一個(gè)有效的DOM節(jié)點(diǎn),是一個(gè)通稱。
3、自定義屬性
在HTML5中我們可以自定義屬性,其格式如下data-*="",例如
data-info="我是自定義屬性",通過Node.dataset['info'] 我們便可以獲取到自定義的屬性值。
Node.dataset是以對(duì)象形式存在的,當(dāng)我們?yōu)橥粋€(gè)DOM節(jié)點(diǎn)指定了多個(gè)自定義屬性時(shí),Node.dataset則存儲(chǔ)了所有的自定義屬性的值。
假設(shè)某元素
5、地理定位
①獲取當(dāng)前地理信息(只獲取一次)
navigator. geolocation.getCurrentPosition(successCallback, errorCallback, options)
②重復(fù)獲取當(dāng)前地理信息(多次)
navigator. geolocation.watchPosition(successCallback, errorCallback, options)
當(dāng)成功獲取地理信息后,會(huì)調(diào)用succssCallback,并返回一個(gè)包含位置信息的對(duì)象position。
position.coords.latitude緯度
position.coords.longitude經(jīng)度
position.coords.accuracy精度
position.coords.altitude海拔高度
當(dāng)獲取地理信息失敗后,會(huì)調(diào)用errorCallback,并返回錯(cuò)誤信息error
可選參數(shù) options 對(duì)象可以調(diào)整位置信息數(shù)據(jù)收集方式
a) enableHighAccuracy 高精度模式 true、false
b) timeout 超時(shí)設(shè)置,單位為ms
c) maximumAge表示瀏覽器重新獲取位置信息的時(shí)間間隔,單位為ms
6、歷史管理
提供window.history,對(duì)象我們可以管理歷史記錄,可用于單頁面應(yīng)用,Single Page Application,可以無刷新改變網(wǎng)頁內(nèi)容。
①pushState(data, title, url) 追加一條歷史記錄
data對(duì)象,用于存儲(chǔ)自定義數(shù)據(jù),通常設(shè)為null
title網(wǎng)頁標(biāo)題,基本上沒有被支持,一般設(shè)為空
url 以當(dāng)前域?yàn)榛A(chǔ)增加一條歷史記錄,不可跨域設(shè)置
②replaceState(data, title, url) 與pushState()基本相同,不同之處在于replaceState(),只是替換當(dāng)前url,不會(huì)增加/減少歷史記錄。
③事件監(jiān)聽
onpopstate事件,當(dāng)前進(jìn)或后退時(shí)則觸發(fā),通過事件對(duì)象ev.state可以讀取到存儲(chǔ)的數(shù)據(jù)。
7、Web存儲(chǔ)(本地存儲(chǔ))
① a、設(shè)置、讀取方便
b、容量較大,sessionStorage約5M、localStorage約20M
c、只能存儲(chǔ)字符串,可以將對(duì)象JSON.stringify() 編碼后存儲(chǔ)
②window.sessionStorage
a、生命周期為關(guān)閉瀏覽器窗口
b、在同一個(gè)窗口下數(shù)據(jù)可以共享
③window.localStorage
a、永久生效,除非手動(dòng)刪除
b、可以多窗口共享
④方法詳解
setItem(key, value) 設(shè)置存儲(chǔ)內(nèi)容
getItem(key) 讀取存儲(chǔ)內(nèi)容
removeItem(key) 刪除鍵值為key的存儲(chǔ)內(nèi)容
clear() 清空所有存儲(chǔ)內(nèi)容
key(n) 以索引值來獲取存儲(chǔ)內(nèi)容
⑤其它
WebSQL、IndexDB
8、應(yīng)用緩存
HTML5中我們可以輕松的構(gòu)建一個(gè)離線(無網(wǎng)絡(luò)狀態(tài))應(yīng)用,只需要?jiǎng)?chuàng)建一個(gè)cache manifest文件。
①優(yōu)勢
a、可配置需要緩存的資源
b、網(wǎng)絡(luò)無連接應(yīng)用仍可用
c、本地讀取緩存資源,提升訪問速度,增強(qiáng)用戶體驗(yàn)
d、減少請求,緩解服務(wù)器負(fù)擔(dān)
②緩存清單
一個(gè)普通文本文件,其中列出了瀏覽器應(yīng)緩存以供離線訪問的資源,推薦使用.appcache為后綴名,添加MIME類型
AddType text/cache-manifest .appcache
例如我們創(chuàng)建了一個(gè)名為demo.appcache的文件,然后在需要應(yīng)用緩存在頁面的根元素(html)添加屬性manifest="demo.appcache",路徑要保證正確。
③manifest文件格式
a、頂行寫CACHE MANIFEST
b、CACHE: 換行 指定我們需要緩存的靜態(tài)資源,如.css、image、js等
c、NETWORK: 換行 指定需要在線訪問的資源,可使用通配符
d、FALLBACK: 換行 當(dāng)被緩存的文件找不到時(shí)的備用資源 ./online.html ./offline.html
當(dāng)online沒有用offline替換
④其他
b、可以指定多個(gè)CACHE: NETWORK: FALLBACK:,無順序限制
c、#表示注釋,只有當(dāng)demo.appcache文件內(nèi)容發(fā)生改變時(shí)或者手動(dòng)清除緩存后,才會(huì)重新緩存。
d、chrome 可以通過chrome://appcache-internals/工具和離線(offline)模式來調(diào)試管理應(yīng)用緩存
9、多媒體
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。