Presentation API
Khả dụng hạn chế
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Presentation API cho phép một user agent (chẳng hạn như trình duyệt web) hiển thị nội dung web một cách hiệu quả thông qua các thiết bị trình chiếu lớn như máy chiếu và tivi kết nối mạng. Các loại thiết bị đa phương tiện được hỗ trợ bao gồm cả màn hình được kết nối bằng dây như HDMI, DVI, hoặc tương tự, hoặc không dây, sử dụng DLNA, Chromecast, AirPlay, hoặc Miracast.

Nói chung, một trang web sử dụng Presentation Controller API để chỉ định nội dung web được hiển thị trên thiết bị trình chiếu và khởi tạo phiên trình chiếu. Với Presentation Receiver API, nội dung web đang trình chiếu có được trạng thái phiên. Bằng cách cung cấp cả trang controller và trang receiver với một kênh dựa trên tin nhắn, nhà phát triển web có thể triển khai sự tương tác giữa hai trang này.
Tùy thuộc vào cơ chế kết nối được cung cấp bởi thiết bị trình chiếu, bất kỳ trang controller và receiver nào đều có thể được hiển thị bởi cùng một user agent hoặc bởi các user agent riêng biệt.
- Đối với thiết bị chế độ 1-UA, cả hai trang được tải bởi cùng một user agent. Tuy nhiên, kết quả hiển thị của trang receiver sẽ được gửi đến thiết bị trình chiếu thông qua giao thức hiển thị từ xa được hỗ trợ.
- Đối với thiết bị chế độ 2-UA, trang receiver được tải trực tiếp trên thiết bị trình chiếu. User agent điều khiển giao tiếp với thiết bị trình chiếu thông qua giao thức điều khiển trình chiếu được hỗ trợ, để điều khiển phiên trình chiếu và truyền tin nhắn giữa hai trang.
Các giao diện
Presentation-
Trong ngữ cảnh duyệt điều khiển, giao diện
Presentationcung cấp cơ chế để ghi đè hành vi mặc định của trình duyệt khi khởi chạy trình chiếu đến màn hình ngoài. Trong ngữ cảnh duyệt nhận, giao diệnPresentationcung cấp quyền truy cập vào các kết nối trình chiếu có sẵn. PresentationRequest-
Khởi tạo hoặc kết nối lại với một trình chiếu được tạo bởi ngữ cảnh duyệt điều khiển.
-
Đối tượng PresentationAvailability được liên kết với các màn hình trình chiếu có sẵn và đại diện cho tính khả dụng màn hình trình chiếu cho một yêu cầu trình chiếu.
-
PresentationConnectionAvailableEventđược kích hoạt trên mộtPresentationRequestkhi một kết nối liên kết với đối tượng được tạo. PresentationConnection-
Mỗi kết nối trình chiếu được đại diện bởi một đối tượng PresentationConnection.
PresentationConnectionCloseEvent-
PresentationConnectionCloseEventđược kích hoạt khi một kết nối trình chiếu vào trạng tháiclosed. PresentationReceiver-
PresentationReceiver cho phép ngữ cảnh duyệt nhận truy cập các ngữ cảnh duyệt điều khiển và giao tiếp với chúng.
PresentationConnectionList-
PresentationConnectionListđại diện cho tập hợp các kết nối trình chiếu chưa bị kết thúc. Nó cũng là một monitor cho sự kiện kết nối trình chiếu mới có sẵn.
Ví dụ
Các mã ví dụ bên dưới minh họa cách sử dụng các tính năng chính của Presentation API: controller.html triển khai controller và presentation.html triển khai trình chiếu. Cả hai trang được phục vụ từ tên miền https://example.org.
Theo dõi tính khả dụng của màn hình trình chiếu
Trong controller.html:
<button id="presentBtn" class="hidden">Present</button>
.hidden {
display: none;
}
// The Present button is visible if at least one presentation display is available
const presentBtn = document.getElementById("presentBtn");
// It is also possible to use relative presentation URL e.g. "presentation.html"
const presUrls = [
"https://example.com/presentation.html",
"https://example.net/alternate.html",
];
// Show or hide present button depending on display availability
const handleAvailabilityChange = (available) => {
if (available) {
presentBtn.classList.remove("hidden");
} else {
presentBtn.classList.add("hidden");
}
};
// Promise is resolved as soon as the presentation display availability is known.
const request = new PresentationRequest(presUrls);
request
.getAvailability()
.then((availability) => {
handleAvailabilityChange(availability.value);
availability.onchange = () => {
handleAvailabilityChange(availability.value);
};
})
.catch(() => {
handleAvailabilityChange(true);
});
Bắt đầu trình chiếu mới
Trong controller.html:
presentBtn.onclick = () => {
// Start new presentation.
request
.start()
// The connection to the presentation will be passed to setConnection on success.
.then(setConnection);
// Otherwise, the user canceled the selection dialog or no screens were found.
};
Kết nối lại với trình chiếu
Trong tệp controller.html:
<button id="reconnectBtn" class="hidden">Reconnect</button>
const reconnect = () => {
const presId = localStorage.getItem("presId");
// presId is mandatory when reconnecting to a presentation.
if (presId) {
request.reconnect(presId).then(setConnection);
}
};
// On navigation of the controller, reconnect automatically.
reconnect();
// Or allow manual reconnection.
reconnectBtn.onclick = reconnect;
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| Presentation API> # interface-presentation> |
Tương thích trình duyệt
Xem thêm
Presentation API polyfill chứa một JavaScript polyfill của đặc tả Presentation API.