Presentation API的目標就是讓投影儀或TV這樣的第二顯示設備能夠被Web使用,包括所有通過有線(HDMI,DVI等)連接以及通過無線(MiraCast, Chromecast, DLNA, AirPlay等)的設備。這個API所做的就是在請求頁面與第二顯示設備上的演示頁面之間實現消息互通。
請注意該API細節并不屬于W3C標準,也不在W3C標準計劃當中。這個API需要通過window.navigator對象下的presentation屬性來使用。該屬性提供了一個叫requestSession()函數,以及present和availablechange兩個事件。requestSession()函數可以用來啟動或恢復第二顯示設備上的演示。它會返回一個session對象指代當前的演示。當通過requestSession()傳入的url里面的演示內容被加載完成后,演示屏幕的頁面會收到present事件。最后,在第一張演示出現后或者最后一張演示完成后會發出availablechange事件。
舉個例子,來自規范文檔,該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>
如果你想要了解更多關于Presentation API的消息,可以看看最終報告。