DocumentPictureInPicture: requestWindow() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

DocumentPictureInPicture 介面的 requestWindow() 方法會為當前主瀏覽上下文開啟畫中畫視窗。它返回一個 Promise,該 Promise 會解析為一個代表畫中畫視窗內部瀏覽上下文的 Window 例項。

requestWindow() 方法需要 瞬時啟用,也就是說,它必須響應使用者的操作(如滑鼠點選或按鈕按下)而被呼叫。

語法

js
requestWindow()
requestWindow(options)

引數

options 可選

一個包含以下屬性的選項物件

disallowReturnToOpener 可選

一個布林值。當設定為 true 時,此選項會提示瀏覽器不顯示允許使用者返回原始標籤頁並關閉畫中畫視窗的使用者介面控制元件。預設為 false

例如,在 Chrome 對此功能的實現中,提供的使用者介面控制元件是畫中畫視窗頂部欄中的“返回標籤頁”按鈕。

browser window containing an embedded video player and multiple control buttons, with a back to tab button in the top bar, highlighted with a red box

height 可選

一個非負數,表示要為畫中畫視窗的視口設定的高度,單位為畫素。預設為 0

preferInitialWindowPlacement 可選

一個布林值,預設為 false。當設定為 true 時,當畫中畫視窗關閉後重新開啟時,它將始終恢復到初始開啟時的位置和大小。相比之下,如果 preferInitialWindowPlacement 設定為 false,則畫中畫視窗的大小和位置在關閉後重新開啟時會被記住——它將恢復到之前的使用者設定的位置和大小。

width 可選

一個非負數,表示要為畫中畫視窗的視口設定的寬度,單位為畫素。預設為 0

注意: 如果指定了 heightwidth 中的一個,則另一個也必須指定,否則會丟擲錯誤。如果兩個值都未指定、指定為 0,或設定得過大,瀏覽器將根據需要調整或忽略這些值,以提供合理的使用者名稱體驗。調整後的尺寸將根據實現、顯示尺寸和其他因素而有所不同。

返回值

一個 Promise,它會解析為一個代表畫中畫視窗內部瀏覽上下文的 Window 物件例項。

異常

NotSupportedError DOMException

如果 API 被明確停用(例如透過瀏覽器設定),則丟擲此錯誤。

NotAllowedError DOMException

在以下情況下丟擲

  • requestWindow() 不是從頂層 window 物件呼叫的。
  • requestWindow() 是從畫中畫視窗的 window 物件呼叫的(即 DocumentPictureInPicture.window)。
  • requestWindow() 是在沒有 瞬時啟用 的情況下呼叫的。
RangeError DOMException

如果只設置了 heightwidth 中的一個,或者 heightwidth 設定為負值,則會丟擲此錯誤。

示例

js
const videoPlayer = document.getElementById("player");

// …

// Open a Picture-in-Picture window with all options set
const pipWindow = await window.documentPictureInPicture.requestWindow({
  width: videoPlayer.clientWidth,
  height: videoPlayer.clientHeight,
  disallowReturnToOpener: true,
  preferInitialWindowPlacement: true,
});

// …

規範

規範
文件畫中畫規範
# dom-documentpictureinpicture-requestwindow

瀏覽器相容性

另見