Presentation API的目標(biāo)就是讓投影儀或TV這樣的第二顯示設(shè)備能夠被Web使用,包括所有通過有線(HDMI,DVI等)連接以及通過無線(MiraCast, Chromecast, DLNA, AirPlay等)的設(shè)備。這個(gè)API所做的就是在請(qǐng)求頁面與第二顯示設(shè)備上的演示頁面之間實(shí)現(xiàn)消息互通。
請(qǐng)注意該API細(xì)節(jié)并不屬于W3C標(biāo)準(zhǔn),也不在W3C標(biāo)準(zhǔn)計(jì)劃當(dāng)中。這個(gè)API需要通過window.navigator對(duì)象下的presentation屬性來使用。該屬性提供了一個(gè)叫requestSession()函數(shù),以及present和availablechange兩個(gè)事件。requestSession()函數(shù)可以用來啟動(dòng)或恢復(fù)第二顯示設(shè)備上的演示。它會(huì)返回一個(gè)session對(duì)象指代當(dāng)前的演示。當(dāng)通過requestSession()傳入的url里面的演示內(nèi)容被加載完成后,演示屏幕的頁面會(huì)收到present事件。最后,在第一張演示出現(xiàn)后或者最后一張演示完成后會(huì)發(fā)出availablechange事件。
舉個(gè)例子,來自規(guī)范文檔,該API的用法如下所示:
<button disabled>Show</button> <script> var presentation = navigator.presentation, showButton = document.querySelector('button'); presentation.onavailablechange = function(e) { showButton.disabled = !e.available; showButton.onclick = show; }; function show() { var session = presentation.requestSession('http://example.org/'); session.onstatechange = function() { switch (session.state) { case 'connected': session.postMessage(/*...*/); session.onmessage = function() { /*...*/ }; break; case 'disconnected': console.log('Disconnected.'); break; } }; } </script>
如果你想要了解更多關(guān)于Presentation API的消息,可以看看最終報(bào)告。