<webview> 標籤
警告
Electron 的 webview 標籤基於 Chromium 的 webview,後者正在經歷劇烈的架構變化。這會影響 webview 的穩定性,包括渲染、導航和事件路由。我們目前不建議使用 webview 標籤,並建議考慮替代方案,例如 iframe、一個 WebContentsView,或者一種避免嵌入內容的架構。
啟用
預設情況下,Electron >= 5 中的 webview 標籤是停用的。您需要在構造 BrowserWindow 時透過設定 webviewTag webPreferences 選項來啟用該標籤。有關更多資訊,請參閱 BrowserWindow 建構函式文件。
概述
在一個隔離的框架和程序中顯示外部網路內容。
程序: 渲染程序
此類未從 'electron' 模組匯出。它僅作為 Electron API 中其他方法的返回值可用。
使用 webview 標籤在您的 Electron 應用程式中嵌入“訪客”內容(例如網頁)。訪客內容包含在 webview 容器中。應用程式中的嵌入頁面控制訪客內容的佈局和渲染方式。
與 iframe 不同,webview 在與您的應用程式不同的程序中執行。它沒有與您的網頁相同的許可權,並且您的應用程式與嵌入內容之間的所有互動都將是非同步的。這可以保護您的應用程式免受嵌入內容的侵害。
從宿主頁面呼叫的大多數方法都需要在主程序中進行同步呼叫。
示例
要在您的應用程式中嵌入網頁,請將 webview 標籤新增到您的應用程式的嵌入器頁面(這是將顯示訪客內容的應用程式頁面)。最簡單的情況下,webview 標籤包括網頁的 src 和控制 webview 容器外觀的 CSS 樣式
<webview id="foo" src="https://www.github.com/" style="display:inline-flex; width:640px; height:480px"></webview>
如果您想以任何方式控制訪客內容,您可以編寫偵聽 webview 事件並使用 webview 方法響應這些事件的 JavaScript 程式碼。這是一個包含兩個事件偵聽器的示例程式碼:一個偵聽網頁開始載入,另一個偵聽網頁停止載入,並在載入期間顯示“正在載入...”訊息
<script>
onload = () => {
const webview = document.querySelector('webview')
const indicator = document.querySelector('.indicator')
const loadstart = () => {
indicator.innerText = 'loading...'
}
const loadstop = () => {
indicator.innerText = ''
}
webview.addEventListener('did-start-loading', loadstart)
webview.addEventListener('did-stop-loading', loadstop)
}
</script>
內部實現
在底層,webview 使用 程序外 iframe (OOPIFs) 實現。webview 標籤本質上是一個使用 shadow DOM 包裝 iframe 元素的自定義元素。
因此,webview 的行為與跨域 iframe 非常相似,例如
- 單擊
webview時,頁面焦點將從嵌入器框架移動到webview。 - 您無法將鍵盤、滑鼠和滾動事件偵聽器新增到
webview。 - 嵌入器框架和
webview之間的所有互動都是非同步的。
CSS 樣式說明
請注意,webview 標籤的樣式內部使用 display:flex; 以確保子 iframe 元素填充 webview 容器的全部高度和寬度,在使用傳統佈局和 flexbox 佈局時。除非指定 display:inline-flex; 用於內聯佈局,否則請勿覆蓋預設的 display:flex; CSS 屬性。
標籤屬性
webview 標籤具有以下屬性
src
<webview src="https://www.github.com/"></webview>
一個 string,表示可見的 URL。寫入此屬性會啟動頂級導航。
將 src 分配給它自己的值將重新載入當前頁面。
src 屬性也可以接受資料 URL,例如 data:text/plain,Hello, world!。
nodeintegration
<webview src="https://www.google.com/" nodeintegration></webview>
一個 boolean。當此屬性存在時,webview 中的訪客頁面將具有節點整合,並可以使用節點 API(如 require 和 process)來訪問低階系統資源。預設情況下,訪客頁面中停用節點整合。
nodeintegrationinsubframes
<webview src="https://www.google.com/" nodeintegrationinsubframes></webview>
一個 boolean,用於啟用 webview 內部 iframe(例如 iframe)中 NodeJS 支援的實驗性選項。您的所有預載入程式都將為每個 iframe 載入,您可以使用 process.isMainFrame 來確定您是在主框架中還是不在主框架中。預設情況下,訪客頁面中停用此選項。
plugins
<webview src="https://www.github.com/" plugins></webview>
一個 boolean。當此屬性存在時,webview 中的訪客頁面將能夠使用瀏覽器外掛。預設情況下停用外掛。
preload
<!-- from a file -->
<webview src="https://www.github.com/" preload="./test.js"></webview>
<!-- or if you want to load from an asar archive -->
<webview src="https://www.github.com/" preload="./app.asar/test.js"></webview>
一個 string,指定將在訪客頁面中其他指令碼執行之前載入的指令碼。指令碼的 URL 協議必須是 file:(即使在使用 asar: 存檔時),因為它將在底層由 Node 的 require 載入,後者將 asar: 存檔視為虛擬目錄。
當訪客頁面沒有節點整合時,此指令碼仍然可以訪問所有 Node API,但 Node 注入的全域性物件將在此指令碼執行完畢後刪除。
httpreferrer
<webview src="https://www.github.com/" httpreferrer="https://example.com/"></webview>
一個 string,為訪客頁面設定引用器 URL。
useragent
<webview src="https://www.github.com/" useragent="Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko"></webview>
一個 string,在導航到頁面之前為訪客頁面設定使用者代理。頁面載入後,使用 setUserAgent 方法更改使用者代理。
disablewebsecurity
<webview src="https://www.github.com/" disablewebsecurity></webview>
一個 boolean。當此屬性存在時,訪客頁面的網路安全將被停用。預設情況下啟用網路安全。
此值只能在第一次導航之前修改。
partition
<webview src="https://github.com" partition="persist:github"></webview>
<webview src="https://electron.nodejs.com.tw" partition="electron"></webview>
一個 string,設定頁面使用的會話。如果 partition 以 persist: 開頭,則頁面將使用持久會話,該會話可供應用程式中具有相同 partition 的所有頁面使用。如果沒有 persist: 字首,則頁面將使用記憶體會話。透過分配相同的 partition,多個頁面可以共享相同的會話。如果未設定 partition,則將使用應用程式的預設會話。
此值只能在第一次導航之前修改,因為活動渲染程序的會話無法更改。後續嘗試修改該值將導致 DOM 異常。
allowpopups
<webview src="https://www.github.com/" allowpopups></webview>
一個 boolean。當此屬性存在時,訪客頁面將被允許開啟新視窗。預設情況下停用彈出視窗。
webpreferences
<webview src="https://github.com" webpreferences="allowRunningInsecureContent, javascript=no"></webview>
一個 string,它是一個由逗號分隔的字串列表,用於指定要在 webview 上設定的 web 首選項。完整的受支援首選項字串列表可以在 BrowserWindow 中找到。
該字串遵循與 window.open 中的 features 字串相同的格式。單獨的名稱將賦予 true 布林值。可以透過包含 = 後跟該值來將首選項設定為其他值。特殊值 yes 和 1 被解釋為 true,而 no 和 0 被解釋為 false。
enableblinkfeatures
<webview src="https://www.github.com/" enableblinkfeatures="PreciseMemoryInfo, CSSVariables"></webview>
一個 string,它是一個由逗號分隔的字串列表,用於指定要啟用的 blink 功能。完整的受支援功能字串列表可以在 RuntimeEnabledFeatures.json5 檔案中找到。
disableblinkfeatures
<webview src="https://www.github.com/" disableblinkfeatures="PreciseMemoryInfo, CSSVariables"></webview>
一個 string,它是一個由逗號分隔的字串列表,用於指定要停用的 blink 功能。完整的受支援功能字串列表可以在 RuntimeEnabledFeatures.json5 檔案中找到。
方法
webview 標籤具有以下方法
在載入方法之前必須載入 webview 元素。
示例
const webview = document.querySelector('webview')
webview.addEventListener('dom-ready', () => {
webview.openDevTools()
})
<webview>.loadURL(url[, options])
urlURL
返回 Promise<void> - 當頁面載入完成後,Promise 將會 resolve(參見 did-finish-load),如果頁面載入失敗,Promise 將會 reject(參見 did-fail-load)。
在 webview 中載入 url,url 必須包含協議字首,例如 http:// 或 file://。
<webview>.downloadURL(url[, options])
urlstring
發起對 url 資源的下載,不進行導航。
<webview>.getURL()
返回 string - 客體頁面的 URL。
<webview>.getTitle()
返回 string - 客體頁面的標題。
<webview>.isLoading()
返回 boolean - 是否正在載入客體頁面的資源。
<webview>.isLoadingMainFrame()
返回 boolean - 是否主框架(而不是 iframe 或其內部的框架)仍在載入中。
<webview>.isWaitingForResponse()
返回 boolean - 客體頁面是否正在等待頁面主要資源的首次響應。
<webview>.stop()
停止任何待處理的導航。
<webview>.reload()
重新載入客體頁面。
<webview>.reloadIgnoringCache()
重新載入客體頁面並忽略快取。
<webview>.canGoBack()
返回 boolean - 是否可以返回客體頁面。
<webview>.canGoForward()
返回 boolean - 是否可以前進客體頁面。
<webview>.canGoToOffset(offset)
offsetInteger
返回 boolean - 是否可以跳轉到 offset 位置。
<webview>.clearHistory()
清除導航歷史記錄。
<webview>.goBack()
使客體頁面返回。
<webview>.goForward()
使客體頁面前進。
<webview>.goToIndex(index)
indexInteger
導航到指定的絕對索引。
<webview>.goToOffset(offset)
offsetInteger
導航到從“當前條目”開始的指定偏移量。
<webview>.isCrashed()
返回 boolean - 渲染程序是否已崩潰。
<webview>.setUserAgent(userAgent)
userAgentstring
覆蓋客體頁面的使用者代理。
<webview>.getUserAgent()
返回 string - 客體頁面的使用者代理。
<webview>.insertCSS(css)
cssstring
返回 Promise<string> - 一個 Promise,resolve 的值為插入 CSS 的 key,稍後可以使用 <webview>.removeInsertedCSS(key) 刪除 CSS。
將 CSS 注入當前網頁,並返回一個用於插入的樣式的唯一鍵,該鍵可以在之後透過 <webview>.removeInsertedCSS(css) 移除。
<webview>.removeInsertedCSS(key)
keystring
返回 Promise<void> - 如果刪除成功,則 resolve。
從當前網頁中刪除插入的 CSS。樣式表由其 key 標識,該 key 由 <webview>.insertCSS(css) 返回。
<webview>.executeJavaScript(code[, userGesture])
codestringuserGestureboolean (可選) - 預設值為false。
返回 Promise<any> - 一個 Promise,resolve 的值為執行程式碼的結果,或者如果程式碼的結果是 rejected 的 Promise,則 reject。
在頁面中執行 code。如果設定了 userGesture,它將在頁面中建立使用者手勢上下文。HTML API(如 requestFullScreen,需要使用者操作)可以利用此選項進行自動化。
<webview>.openDevTools()
為客體頁面開啟 DevTools 視窗。
<webview>.closeDevTools()
關閉客體頁面的 DevTools 視窗。
<webview>.isDevToolsOpened()
返回 boolean - 客體頁面是否附加了 DevTools 視窗。
<webview>.isDevToolsFocused()
返回 boolean - 客體頁面的 DevTools 視窗是否處於焦點狀態。
<webview>.inspectElement(x, y)
xIntegeryInteger
開始檢查客體頁面位置 (x, y) 的元素。
<webview>.inspectSharedWorker()
開啟客體頁面中存在的共享 worker 上下文的 DevTools。
<webview>.inspectServiceWorker()
開啟客體頁面中存在的 service worker 上下文的 DevTools。
<webview>.setAudioMuted(muted)
mutedboolean
設定客體頁面靜音。
<webview>.isAudioMuted()
返回 boolean - 客體頁面是否已靜音。
<webview>.isCurrentlyAudible()
返回 boolean - 是否當前正在播放音訊。
<webview>.undo()
在頁面中執行編輯命令 undo。
<webview>.redo()
在頁面中執行編輯命令 redo。
<webview>.cut()
在頁面中執行編輯命令 cut。
<webview>.copy()
在頁面中執行編輯命令 copy。
<webview>.centerSelection()
在頁面中居中當前的文字選擇。
<webview>.paste()
在頁面中執行編輯命令 paste。
<webview>.pasteAndMatchStyle()
在頁面中執行編輯命令 pasteAndMatchStyle。
<webview>.delete()
在頁面中執行編輯命令 delete。
<webview>.selectAll()
在頁面中執行編輯命令 selectAll。
<webview>.unselect()
在頁面中執行編輯命令 unselect。
<webview>.scrollToTop()
滾動到當前 <webview> 的頂部。
<webview>.scrollToBottom()
滾動到當前 <webview> 的底部。
<webview>.adjustSelection(options)
透過給定的量調整聚焦框架中當前文字選擇的起始和結束點。負數將選擇移動到文件的開頭,正數將選擇移動到文件的結尾。
請參閱 webContents.adjustSelection 以獲取示例。
<webview>.replace(text)
textstring
在頁面中執行編輯命令 replace。
<webview>.replaceMisspelling(text)
textstring
在頁面中執行編輯命令 replaceMisspelling。
<webview>.insertText(text)
textstring
返回 Promise<void>
將 text 插入到焦點元素中。
<webview>.findInPage(text[, options])
textstring - 要搜尋的內容,不能為空。
返回 Integer - 請求的請求 ID。
開始請求以查詢網頁中 text 的所有匹配項。可以透過訂閱 found-in-page 事件來獲取請求結果。
<webview>.stopFindInPage(action)
actionstring - 指定結束<webview>.findInPage請求時要執行的操作。clearSelection- 清除選區。keepSelection- 將選區轉換為普通選區。activateSelection- 聚焦並點選選區節點。
停止 webview 的任何 findInPage 請求,並提供 action。
<webview>.print([options])
返回 Promise<void>
列印 webview 的網頁。與 webContents.print([options]) 相同。
<webview>.printToPDF(options)
返回 Promise<Uint8Array> - 解析為生成的 PDF 資料。
將 webview 的網頁列印為 PDF,與 webContents.printToPDF(options) 相同。
<webview>.capturePage([rect])
rectRectangle (可選) - 要捕獲的頁面區域。
返回 Promise<NativeImage> - 解析為 NativeImage
捕獲 rect 內的頁面快照。省略 rect 將捕獲整個可見頁面。
<webview>.send(channel, ...args)
channelstring...argsany[]
返回 Promise<void>
透過 channel 向渲染程序傳送非同步訊息,您還可以傳送任意引數。渲染程序可以透過使用 ipcRenderer 模組監聽 channel 事件來處理該訊息。
有關示例,請參閱 webContents.send。
<webview>.sendToFrame(frameId, channel, ...args)
frameId[number, number] -[processId, frameId]channelstring...argsany[]
返回 Promise<void>
透過 channel 向渲染程序傳送非同步訊息,您還可以傳送任意引數。渲染程序可以透過使用 ipcRenderer 模組監聽 channel 事件來處理該訊息。
有關示例,請參閱 webContents.sendToFrame。
<webview>.sendInputEvent(event)
返回 Promise<void>
將輸入 event 傳送到頁面。
有關 event 物件的詳細說明,請參閱 webContents.sendInputEvent。
<webview>.setZoomFactor(factor)
factornumber - 縮放比例。
將縮放比例更改為指定的因子。縮放比例是縮放百分比除以 100,因此 300% = 3.0。
<webview>.setZoomLevel(level)
levelnumber - 縮放級別。
將縮放級別更改為指定的級別。原始大小為 0,每個高於或低於原始大小的增量表示相對於預設限制的 300% 和 50% 的原始大小放大或縮小 20%。公式為 scale := 1.2 ^ level。
Chromium 級別的縮放策略是同源策略,這意味著特定域的縮放級別會傳播到具有相同域的所有視窗例項。區分視窗 URL 將使縮放功能在每個視窗中生效。
<webview>.getZoomFactor()
返回 number - 當前縮放比例。
<webview>.getZoomLevel()
返回 number - 當前縮放級別。
<webview>.setVisualZoomLevelLimits(minimumLevel, maximumLevel)
minimumLevelnumbermaximumLevelnumber
返回 Promise<void>
設定捏合縮放的最大和最小級別。
<webview>.showDefinitionForSelection() macOS
顯示查詢頁面上選定單詞的彈出式字典。
<webview>.getWebContentsId()
返回 number - 此 webview 的 WebContents ID。
DOM 事件
以下 DOM 事件可用於 webview 標籤
事件: 'load-commit'
返回
urlstringisMainFrameboolean
當載入已提交時觸發。這包括當前文件內的導航以及子框架文件級別的載入,但不包括非同步資源載入。
事件: 'did-finish-load'
當導航完成時觸發,即選項卡的載入指示器停止旋轉,並且分發 onload 事件。
事件: 'did-fail-load'
返回
errorCode整數errorDescription字串validatedURL字串isMainFrameboolean
當載入失敗或被取消時觸發此事件,例如呼叫 window.stop()。
事件: 'did-frame-finish-load'
返回
isMainFrameboolean
當框架完成導航時觸發。
事件: 'did-start-loading'
對應於選項卡的載入指示器開始旋轉的時間點。
事件: 'did-stop-loading'
對應於選項卡的載入指示器停止旋轉的時間點。
事件: 'did-attach'
當附加到嵌入器 Web 內容時觸發。
事件: 'dom-ready'
當給定框架中的文件載入時觸發。
事件: 'page-title-updated'
返回
titlestringexplicitSetboolean
在導航期間設定頁面標題時觸發。當標題從檔案 URL 合成時,explicitSet 為 false。
事件: 'page-favicon-updated'
返回
favicons字串[] - URL 陣列。
當頁面接收到 favicon URL 時觸發。
事件: 'enter-html-full-screen'
當頁面透過 HTML API 觸發進入全屏模式時觸發。
事件: 'leave-html-full-screen'
當頁面透過 HTML API 觸發退出全屏模式時觸發。
事件: 'console-message'
返回
level整數 - 日誌級別,從 0 到 3。按順序匹配verbose、info、warning和error。message字串 - 實際的控制檯訊息line整數 - 觸發此控制檯訊息的源的行號sourceId字串
當來賓視窗記錄控制檯訊息時觸發。
以下示例程式碼將所有日誌訊息轉發到嵌入器的控制檯,而不考慮日誌級別或其他屬性。
const webview = document.querySelector('webview')
webview.addEventListener('console-message', (e) => {
console.log('Guest page logged a message:', e.message)
})
事件: 'found-in-page'
返回
result物件requestId整數activeMatchOrdinal整數 - 活動匹配項的位置。matches整數 - 匹配項數量。selectionArea矩形 - 第一個匹配區域的座標。finalUpdate布林值
當 webview.findInPage 請求的搜尋結果可用時觸發。
const webview = document.querySelector('webview')
webview.addEventListener('found-in-page', (e) => {
webview.stopFindInPage('keepSelection')
})
const requestId = webview.findInPage('test')
console.log(requestId)
事件: 'will-navigate'
返回
urlstring
當用戶或頁面想要開始導航時發出。當 window.location 物件發生更改或使用者單擊頁面中的連結時,可能會發生這種情況。
當使用 <webview>.loadURL 和 <webview>.back 等 API 以程式設計方式啟動導航時,此事件不會發出。
在頁面內導航期間也不會發出,例如單擊錨鏈接或更新 window.location.hash。對於此目的,請使用 did-navigate-in-page 事件。
呼叫 event.preventDefault() 不會產生任何效果。
事件: 'will-frame-navigate'
返回
urlstringisMainFramebooleanframeProcessId整數frameRoutingId整數
當用戶或頁面想要在 <webview> 或其中嵌入的任何框架中的任何位置開始導航時發出。當 window.location 物件發生更改或使用者單擊頁面中的連結時,可能會發生這種情況。
當使用 <webview>.loadURL 和 <webview>.back 等 API 以程式設計方式啟動導航時,此事件不會發出。
在頁面內導航期間也不會發出,例如單擊錨鏈接或更新 window.location.hash。對於此目的,請使用 did-navigate-in-page 事件。
呼叫 event.preventDefault() 不會產生任何效果。
事件: 'did-start-navigation'
返回
urlstringisInPlace布林值isMainFramebooleanframeProcessId整數frameRoutingId整數
當任何框架(包括主框架)開始導航時發出。對於頁面內導航,isInPlace 將為 true。
事件: 'did-redirect-navigation'
返回
urlstringisInPlace布林值isMainFramebooleanframeProcessId整數frameRoutingId整數
在導航期間發生伺服器端重定向後發出。例如 302 重定向。
事件: 'did-navigate'
返回
urlstring
當導航完成時發出。
此事件不會為頁面內導航發出,例如單擊錨鏈接或更新 window.location.hash。對於此目的,請使用 did-navigate-in-page 事件。
事件: 'did-frame-navigate'
返回
urlstringhttpResponseCode整數 - 非 HTTP 導航為 -1httpStatusText字串 - 非 HTTP 導航為空isMainFramebooleanframeProcessId整數frameRoutingId整數
當任何框架導航完成時發出。
此事件不會為頁面內導航發出,例如單擊錨鏈接或更新 window.location.hash。對於此目的,請使用 did-navigate-in-page 事件。
事件: 'did-navigate-in-page'
返回
isMainFramebooleanurlstring
當發生頁面內導航時發出。
當頁面內導航發生時,頁面 URL 會更改,但不會導致頁面外部的導航。發生這種情況的示例是單擊錨鏈接或觸發 DOM hashchange 事件時。
事件: 'close'
當來賓頁面嘗試關閉自身時觸發。
以下示例程式碼在來賓嘗試關閉自身時將 webview 導航到 about:blank。
const webview = document.querySelector('webview')
webview.addEventListener('close', () => {
webview.src = 'about:blank'
})
事件: 'ipc-message'
返回
frameId[number, number] -[processId, frameId]對。channelstringargsany[]
當來賓頁面向嵌入器頁面傳送非同步訊息時觸發。
使用 sendToHost 方法和 ipc-message 事件,您可以在來賓頁面和嵌入器頁面之間進行通訊
// In embedder page.
const webview = document.querySelector('webview')
webview.addEventListener('ipc-message', (event) => {
console.log(event.channel)
// Prints "pong"
})
webview.send('ping')
// In guest page.
const { ipcRenderer } = require('electron')
ipcRenderer.on('ping', () => {
ipcRenderer.sendToHost('pong')
})
事件: 'render-process-gone'
返回
detailsRenderProcessGoneDetails
當渲染程序意外消失時觸發。通常是因為它崩潰或被終止了。
事件: 'destroyed'
當 WebContents 被銷燬時觸發。
事件: 'media-started-playing'
當媒體開始播放時發出。
事件: 'media-paused'
當媒體暫停或播放完畢時發出。
事件: 'did-change-theme-color'
返回
themeColor字串
當頁面主題顏色更改時發出。這通常是由於遇到 meta 標籤
<meta name='theme-color' content='#ff0000'>
事件: 'update-target-url'
返回
urlstring
當滑鼠懸停在連結上或鍵盤將焦點移動到連結上時發出。
事件: 'devtools-open-url'
返回
url字串 - 單擊或選擇的連結的 URL。
當在 DevTools 中單擊連結或為其上下文選單中選擇“在新標籤頁中開啟”時發出。
事件: 'devtools-search-query'
返回
eventEventquery字串 - 要查詢的文字。
當為其上下文選單中選擇“搜尋”時發出。
事件: 'devtools-opened'
當 DevTools 開啟時發出。
事件: 'devtools-closed'
當 DevTools 關閉時發出。
事件: 'devtools-focused'
在 DevTools 聚焦/開啟時發出。
事件: 'context-menu'
返回
params物件x整數 - x 座標。y整數 - y 座標。linkURL字串 - 包含右鍵選單被觸發的節點的連結的 URL。linkText字串 - 與連結關聯的文字。如果連結的內容是影像,則可能為空字串。pageURL字串 - 觸發右鍵選單的頂級頁面的 URL。frameURL字串 - 觸發右鍵選單的子框架的 URL。srcURL字串 - 觸發右鍵選單的元素的源 URL。具有源 URL 的元素是影像、音訊和影片。mediaType字串 - 觸發右鍵選單的節點的型別。可以是none、image、audio、video、canvas、file或plugin。hasImageContents布林值 - 右鍵選單是否在具有非空內容的影像上觸發。isEditable布林值 - 上下文是否可編輯。selectionText字串 - 觸發右鍵選單的選擇文字。titleText字串 - 觸發右鍵選單的選擇的標題文字。altText字串 - 觸發右鍵選單的選擇的替代文字。suggestedFilename字串 - 透過右鍵選單的“另存為連結”選項儲存檔案時建議使用的檔名。selectionRectRectangle - 表示文件空間中選擇座標的矩形。selectionStartOffset數字 - 選擇文字的起始位置。referrerPolicyReferrer - 觸發選單的框架的 referrer policy。misspelledWord字串 - 游標下的拼寫錯誤單詞(如果有)。dictionarySuggestions字串[] - 用於向用戶顯示以替換misspelledWord的建議單詞的陣列。僅在存在拼寫錯誤單詞且已啟用拼寫檢查器時可用。frameCharset字串 - 觸發選單的框架的字元編碼。formControlType字串 - 觸發右鍵選單的源。可能的值包括none、button-button、field-set、input-button、input-checkbox、input-color、input-date、input-datetime-local、input-email、input-file、input-hidden、input-image、input-month、input-number、input-password、input-radio、input-range、input-reset、input-search、input-submit、input-telephone、input-text、input-time、input-url、input-week、output、reset-button、select-list、select-list、select-multiple、select-one、submit-button和text-area。spellcheckEnabled布林值 - 如果上下文可編輯,則拼寫檢查是否啟用。menuSourceType字串 - 觸發右鍵選單的輸入源。可以是none、mouse、keyboard、touch、touchMenu、longPress、longTap、touchHandle、stylus、adjustSelection或adjustSelectionReset。mediaFlags物件 - 觸發右鍵選單的媒體元素的標誌。inError布林值 - 媒體元素是否已崩潰。isPaused布林值 - 媒體元素是否已暫停。isMuted布林值 - 媒體元素是否已靜音。hasAudio布林值 - 媒體元素是否具有音訊。isLooping布林值 - 媒體元素是否迴圈播放。isControlsVisible布林值 - 媒體元素的控制元件是否可見。canToggleControls布林值 - 媒體元素的控制元件是否可以切換。canPrint布林值 - 媒體元素是否可以列印。canSave布林值 - 媒體元素是否可以下載。canShowPictureInPicture布林值 - 媒體元素是否可以顯示畫中畫。isShowingPictureInPicture布林值 - 媒體元素是否當前正在顯示畫中畫。canRotate布林值 - 媒體元素是否可以旋轉。canLoop布林值 - 媒體元素是否可以迴圈播放。
editFlags物件 - 這些標誌指示渲染器是否能夠執行相應的操作。canUndo布林值 - 渲染器是否可以撤銷。canRedo布林值 - 渲染器是否可以重做。canCut布林值 - 渲染器是否可以剪下。canCopy布林值 - 渲染器是否可以複製。canPaste布林值 - 渲染器是否可以貼上。canDelete布林值 - 渲染器是否可以刪除。canSelectAll布林值 - 渲染器是否可以選擇所有內容。canEditRichly布林值 - 渲染器是否可以豐富地編輯文字。
當需要處理新的右鍵選單時發出。