HTML5 API

一、通信 communication

1.1 WebSockets

  1. WebSockets 是什么刹前?
    WebSockets 是一個應用層協(xié)議两入,與 http 協(xié)議一樣,是基于 TCP 協(xié)議的溉箕。
    與 http 協(xié)議的不同之處在于:它是一個雙向協(xié)議,即既可以從客戶端發(fā)起請求悦昵,也可以從服務端發(fā)起請求肴茄。而 http 是只能從客戶端發(fā)起請求的。

  2. WebSockets 有什么作用旱捧?
    從 WebSockets 與 http 協(xié)議的不同可以看出独郎,它非常適用于需要客戶端與服務端雙向發(fā)起請求的業(yè)務場景。比如說:直播枚赡,實時聊天等

  3. 如何使用 WebSockets氓癌?
    客戶端示例:

let ws = new WebSocket('wss://12.233.233.40')
// 開啟webSocket
ws.onopen = function(msg) {
    // 發(fā)送信息給服務端
    ws.send('hello')
}
// 接收服務端信息
ws.onmessage = function(msg) {
    console.log('Received message: ' + msg)
    // 關閉websocket
    ws.close()
}

1.2 跨域通信機制

  1. 為什么需要跨域通信機制?

    • 瀏覽器有一個“同源政策(same-origin policy)”,限制非同源時贫橙,無法獲取Cookie贪婉、localStorage 等數(shù)據(jù)、無法獲取 dom卢肃、無法發(fā)送 ajax 請求
    • 這種方式會使得一些合理的用途也受到影響疲迂。如:兩個網(wǎng)站一級域名相同,二級域名不同莫湘,也不屬于同源尤蒿,無法共享信息
    • 因此需要有一種安全的跨域通信機制來解決這個問題
  2. 如何實現(xiàn)跨域通信?
    過去已經(jīng)有一些跨域通信的實現(xiàn)方式幅垮,HTML5 又給出了一個解決方案腰池,一個api:postMessage
    這是客戶端的一個api,允許來自不同源的腳本通信忙芒,實現(xiàn)跨域消息傳遞示弓。如:

發(fā)送message:

// postMessage接收兩個參數(shù):msg(消息內(nèi)容),origin(目標窗口的源呵萨,協(xié)議+主機+端口號)
window.frame[0].postMessage('hello', 'http://10.283.27.44')

接收message:

// 發(fā)送消息會觸發(fā) message 事件奏属,監(jiān)聽這個事件就可以獲取到發(fā)送的 msg
window.addEventListener('message', function(res){
    let data = res.data
    console.log(data);
})

二、離線 & 存儲 storage

2.1 cookie潮峦、localStorage囱皿、sessionStorage 的區(qū)別

31DE8088-3002-45D9-AC2F-AA7357DC6405.png

2.2 localStorage

Window.localStorage.setItem('name', 'kris')
Window.localStorage.getItem('name')   // kris

2.3 sessionStorage

Window.sessionStorage.setItem('name', 'kris')
Window.sessionStorage.getItem('name')   // kris

2.4 離線存儲

  • 離線存儲指HTML5提供一種緩存機制,使得基于 web 的應用程序可以離線運行跑杭。
  • 離線存儲的實現(xiàn)方式是為應用頁面中的 <html> 元素增加 manifest 屬性铆帽,值為一個緩存清單文件(后綴為 appcache)
    如:
<html manifest="example.appcache">
</html>
  • 這個緩存文件里有一系列的 URL 列表,這些 URL 分別指向頁面中的 html德谅、css爹橱、javascript、圖片等相關內(nèi)容

三、多媒體 media

3.1 audio 和 video

  • HTML5 增加了 <video> 和 <audio> 標簽愧驱,使得開發(fā)者可以直接使用 HTML 在 web 中嵌入音頻和視頻
  • HTML5 還增加了一些 js 的 api慰技,用于對音頻和視頻進行控制,如:
function dealVideo() {
    let video = document.getElementByTagName('video')
    if (video.paused) {
        video.play()
    } else {
        video.paused()
    }
}

3.2 實時通信

  • WebRTC 中的 RTC 指實時通信组砚,它是一種支持在瀏覽器客戶端之間語音/視頻交流的技術吻商。
  • WebRTC 組件通過 Javascript API 獲得,包含網(wǎng)絡流 API糟红, 點對點連接 API艾帐, 數(shù)據(jù) API 等

3.3 Camera API

  • 通過 Camera API,可以使用手機攝像頭拍照盆偿,后將拍的照片發(fā)送給當前網(wǎng)頁柒爸。
  • 這些操作主要通過一個 input 元素實現(xiàn),其中 type 屬性必須為 file事扭,如:
<input type="file" accept="image/*">

四捎稚、3D & 圖像

4.1 canvas

  • canvas 是一個位圖畫布
  • canvas 是一個可以使用 js 來繪制圖形的 html 元素,可以實現(xiàn)繪制圖表求橄、動畫等

4.2 webGL

  • WebGL 是一個 javascript API今野,用于在任何兼容的瀏覽器中呈現(xiàn)交互式3D和2D圖形,無需使用插件
  • WebGL 也可在 <canvas> 元素中使用

五罐农、設備訪問

5.1 使用地理位置定位

  • HTML5 允許請求位置信息条霜,若用戶同意,瀏覽器就會返回位置信息涵亏。
  • 地理位置 API 通過 navigator.geolocation 提供蛔外,如果該對象存在,那么地理位置服務可用
    獲取地理位置舉例:
navigator.geolocation.getCurrentPosition(function(position) {
    console.log(position.coords.latitude, position.coords.longitude)
})

5.2 檢測設備方向

  • 基于 web 的設備越來越多地能夠確定設備的方向
  • 有兩種 js 事件負責處理設備方向信息:deviceorientation 和 devicemotion
  • deviceorientation 會在加速度傳感器檢測到設備在方向上發(fā)生變化時觸發(fā)
  • devicemotion 會在加速度發(fā)生改變時觸發(fā)

5.3 觸控事件

  • 觸摸事件提供了在觸摸屏或在觸摸板上解釋手指(或觸控筆)活動的能力
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溯乒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子豹爹,更是在濱河造成了極大的恐慌裆悄,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臂聋,死亡現(xiàn)場離奇詭異光稼,居然都是意外死亡,警方通過查閱死者的電腦和手機孩等,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門艾君,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肄方,你說我怎么就攤上這事冰垄。” “怎么了权她?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵虹茶,是天一觀的道長逝薪。 經(jīng)常有香客問我,道長蝴罪,這世上最難降的妖魔是什么董济? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮要门,結果婚禮上虏肾,老公的妹妹穿的比我還像新娘。我一直安慰自己欢搜,他們只是感情好封豪,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著狂巢,像睡著了一般撑毛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上唧领,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天藻雌,我揣著相機與錄音,去河邊找鬼斩个。 笑死胯杭,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的受啥。 我是一名探鬼主播做个,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼滚局!你這毒婦竟也來了居暖?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤藤肢,失蹤者是張志新(化名)和其女友劉穎太闺,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘁圈,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡省骂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了最住。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钞澳。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涨缚,靈堂內(nèi)的尸體忽然破棺而出轧粟,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布逃延,位于F島的核電站览妖,受9級特大地震影響,放射性物質發(fā)生泄漏揽祥。R本人自食惡果不足惜讽膏,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拄丰。 院中可真熱鬧府树,春花似錦、人聲如沸料按。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽载矿。三九已至垄潮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間闷盔,已是汗流浹背弯洗。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逢勾,地道東北人牡整。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像溺拱,于是被迫代替她去往敵國和親逃贝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容