webContents
Webページをレンダリングおよび制御します。
プロセス: メイン
webContents は EventEmitter です。これは、Webページのレンダリングと制御を担当し、BrowserWindow オブジェクトのプロパティです。 webContents オブジェクトへのアクセス例を次に示します。
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ width: 800, height: 1500 })
win.loadURL('https://github.com')
const contents = win.webContents
console.log(contents)
ナビゲーションイベント
いくつかのイベントを使用して、webContents 内で発生するナビゲーションを監視できます。
ドキュメントナビゲーション
webContents が別のページに移動する場合(ページ内ナビゲーション とは対照的に)、次のイベントが発行されます。
did-start-navigationwill-frame-navigatewill-navigate(メインフレームがナビゲートする場合のみ発行)will-redirect(ナビゲーション中にリダイレクトが発生した場合のみ発行)did-redirect-navigation(ナビゲーション中にリダイレクトが発生した場合のみ発行)did-frame-navigatedid-navigate(メインフレームがナビゲートする場合のみ発行)
キャンセル可能なイベントのいずれかで event.preventDefault() が呼び出された場合、後続のイベントは発行されません。
ページ内ナビゲーション
ページ内ナビゲーションでは、ページはリロードされませんが、代わりに現在のページ内の場所に移動します。これらのイベントはキャンセルできません。ページ内ナビゲーションの場合、次のイベントがこの順序で発生します。
フレームナビゲーション
will-navigate および did-navigate イベントは、メインフレーム がナビゲートする場合にのみ発生します。 <iframe> のナビゲーションも監視する場合は、will-frame-navigate および did-frame-navigate イベントを使用します。
メソッド
これらのメソッドには、webContents モジュールからアクセスできます
const { webContents } = require('electron')
console.log(webContents)
webContents.getAllWebContents()
WebContents[] を返します - すべての WebContents インスタンスの配列。これには、すべてのウィンドウ、webview、開いている devtools、および devtools 拡張機能のバックグラウンドページの Webコンテンツが含まれます。
webContents.getFocusedWebContents()
WebContents | null を返します - このアプリケーションでフォーカスされている Webコンテンツ。それ以外の場合は null を返します。
webContents.fromId(id)
id整数
WebContents | undefined を返します - 指定された ID を持つ WebContents インスタンス。または、指定された ID に関連付けられた WebContents がない場合は undefined を返します。
webContents.fromFrame(frame)
frameWebFrameMain
WebContents | undefined を返します - 指定された WebFrameMain を持つ WebContents インスタンス。または、指定された WebFrameMain に関連付けられた WebContents がない場合は undefined を返します。
webContents.fromDevToolsTargetId(targetId)
targetIdstring - WebContents インスタンスに関連付けられた Chrome DevTools プロトコルの TargetID。
WebContents | undefined を返します - 指定された TargetID を持つ WebContents インスタンス。または、指定された TargetID に関連付けられた WebContents がない場合は undefined を返します。
Chrome DevTools プロトコル と通信する場合、割り当てられた TargetID に基づいて WebContents インスタンスを検索すると便利な場合があります。
async function lookupTargetId (browserWindow) {
const wc = browserWindow.webContents
await wc.debugger.attach('1.3')
const { targetInfo } = await wc.debugger.sendCommand('Target.getTargetInfo')
const { targetId } = targetInfo
const targetWebContents = await wc.fromDevToolsTargetId(targetId)
}
クラス: WebContents
BrowserWindow インスタンスの内容をレンダリングおよび制御します。
プロセス: メイン
このクラスは 'electron' モジュールからエクスポートされません。これは、Electron API の他のメソッドの戻り値としてのみ使用できます。
インスタンスイベント
イベント: 'did-finish-load'
ナビゲーションが完了したとき、つまり、タブのスピナーが回転を停止し、onload イベントがディスパッチされたときに発行されます。
イベント: 'did-fail-load'
返り値
eventイベントerrorCode整数errorDescription文字列validatedURL文字列isMainFrame真偽値frameProcessId整数frameRoutingId整数
このイベントは did-finish-load に似ていますが、ロードが失敗した場合に発行されます。エラーコードとその意味の完全なリストは、こちらで確認できます。
イベント: 'did-fail-provisional-load'
返り値
eventイベントerrorCode整数errorDescription文字列validatedURL文字列isMainFrame真偽値frameProcessId整数frameRoutingId整数
このイベントは did-fail-load に似ていますが、ロードがキャンセルされた場合(例: window.stop() が呼び出された場合)に発行されます。
イベント: 'did-frame-finish-load'
返り値
eventイベントisMainFrame真偽値frameProcessId整数frameRoutingId整数
フレームがナビゲーションを完了したときに発行されます。
イベント: 'did-start-loading'
タブのスピナーが回転を開始した時点に対応します。
イベント: 'did-stop-loading'
タブのスピナーが回転を停止した時点に対応します。
イベント: 'dom-ready'
トップレベルフレームのドキュメントがロードされたときに発行されます。
イベント: 'page-title-updated'
返り値
eventイベントtitle文字列explicitSet真偽値
ナビゲーション中にページタイトルが設定されたときに発行されます。タイトルがファイル URL から合成された場合、explicitSet は false になります。
イベント: 'page-favicon-updated'
返り値
eventイベントfavicons文字列[] - URL の配列。
ページがファビコンの URL を受信したときに発行されます。
イベント: 'content-bounds-updated'
返り値
eventイベントboundsRectangle - 要求された新しいコンテンツの境界
ページが window.moveTo、window.resizeTo、または関連する API を呼び出したときに発行されます。
デフォルトでは、これによりウィンドウが移動します。この動作を防ぐには、event.preventDefault() を呼び出します。
イベント: 'did-create-window'
返り値
windowBrowserWindowdetailsオブジェクトurlstring - 作成されたウィンドウの URL。frameNamestring -window.open()の呼び出しで作成されたウィンドウに与えられた名前です。referrerReferrer - 新しいウィンドウに渡されるリファラーです。リファラーポリシーによっては、Refererヘッダーが送信される場合と送信されない場合があります。postBodyPostBody (オプション) - 新しいウィンドウに送信されるポストデータと、設定される適切なヘッダーです。ポストデータを送信しない場合は、値はnullになります。ウィンドウがtarget=_blankを設定したフォームによって作成されている場合にのみ定義されます。dispositionstring -default、foreground-tab、background-tab、new-window、またはotherを指定できます。
レンダラーで window.open を介してウィンドウが正常に作成された後に発行されます。webContents.setWindowOpenHandler からウィンドウの作成がキャンセルされた場合は発行されません。
詳細および webContents.setWindowOpenHandler と組み合わせて使用する方法については、window.open() を参照してください。
イベント: 'will-navigate'
返り値
detailsEvent<>urlstring - フレームが移動しようとしている URL です。isSameDocumentboolean - このイベントは、window.history API を使用した同じドキュメント内の移動や、参照フラグメントの移動では発生しません。このプロパティは、このイベントでは常にfalseに設定されます。isMainFrameboolean - ナビゲーションがメインフレームで発生している場合は true です。frameWebFrameMain - ナビゲートされるフレームです。initiatorWebFrameMain (オプション) - ナビゲーションを開始したフレームです。親フレーム (フレームの名前付きのwindow.openを介したなど) の場合もあれば、フレームによって開始されなかった場合は null の場合もあります。開始フレームがイベントが発行される前に削除された場合も null になる可能性があります。
urlstring 非推奨isInPlaceboolean 非推奨isMainFrameboolean 非推奨frameProcessIdInteger 非推奨frameRoutingIdInteger 非推奨
ユーザーまたはページがメインフレームでナビゲーションを開始しようとしたときに発行されます。window.location オブジェクトが変更されたり、ユーザーがページ内のリンクをクリックした場合などに発生します。
このイベントは、webContents.loadURL や webContents.back などの API を使用してプログラムでナビゲーションが開始された場合には発行されません。
また、アンカーリンクをクリックしたり、window.location.hash を更新したりするなどのページ内ナビゲーションでも発行されません。この目的には did-navigate-in-page イベントを使用してください。
event.preventDefault() を呼び出すと、ナビゲーションが阻止されます。
イベント: 'will-frame-navigate'
返り値
detailsEvent<>urlstring - フレームが移動しようとしている URL です。isSameDocumentboolean - このイベントは、window.history API を使用した同じドキュメント内の移動や、参照フラグメントの移動では発生しません。このプロパティは、このイベントでは常にfalseに設定されます。isMainFrameboolean - ナビゲーションがメインフレームで発生している場合は true です。frameWebFrameMain - ナビゲートされるフレームです。initiatorWebFrameMain (オプション) - ナビゲーションを開始したフレームです。親フレーム (フレームの名前付きのwindow.openを介したなど) の場合もあれば、フレームによって開始されなかった場合は null の場合もあります。開始フレームがイベントが発行される前に削除された場合も null になる可能性があります。
ユーザーまたはページが任意のフレームでナビゲーションを開始しようとしたときに発行されます。window.location オブジェクトが変更されたり、ユーザーがページ内のリンクをクリックした場合などに発生します。
will-navigate とは異なり、will-frame-navigate はメインフレームまたはそのサブフレームのいずれかがナビゲートを試みたときに発行されます。ナビゲーションイベントがメインフレームから発生した場合、isMainFrame は true になります。
このイベントは、webContents.loadURL や webContents.back などの API を使用してプログラムでナビゲーションが開始された場合には発行されません。
また、アンカーリンクをクリックしたり、window.location.hash を更新したりするなどのページ内ナビゲーションでも発行されません。この目的には did-navigate-in-page イベントを使用してください。
event.preventDefault() を呼び出すと、ナビゲーションが阻止されます。
イベント: 'did-start-navigation'
返り値
detailsEvent<>urlstring - フレームが移動しようとしている URL です。isSameDocumentboolean - ドキュメントを変更せずにナビゲーションが発生したかどうか。同じドキュメント内のナビゲーションの例としては、参照フラグメントナビゲーション、pushState/replaceState、および同じページ履歴ナビゲーションがあります。isMainFrameboolean - ナビゲーションがメインフレームで発生している場合は true です。frameWebFrameMain - ナビゲートされるフレームです。initiatorWebFrameMain (オプション) - ナビゲーションを開始したフレームです。親フレーム (フレームの名前付きのwindow.openを介したなど) の場合もあれば、フレームによって開始されなかった場合は null の場合もあります。開始フレームがイベントが発行される前に削除された場合も null になる可能性があります。
urlstring 非推奨isInPlaceboolean 非推奨isMainFrameboolean 非推奨frameProcessIdInteger 非推奨frameRoutingIdInteger 非推奨
任意のフレーム (メインフレームを含む) がナビゲーションを開始したときに発行されます。
イベント: 'will-redirect'
返り値
detailsEvent<>urlstring - フレームが移動しようとしている URL です。isSameDocumentboolean - ドキュメントを変更せずにナビゲーションが発生したかどうか。同じドキュメント内のナビゲーションの例としては、参照フラグメントナビゲーション、pushState/replaceState、および同じページ履歴ナビゲーションがあります。isMainFrameboolean - ナビゲーションがメインフレームで発生している場合は true です。frameWebFrameMain - ナビゲートされるフレームです。initiatorWebFrameMain (オプション) - ナビゲーションを開始したフレームです。親フレーム (フレームの名前付きのwindow.openを介したなど) の場合もあれば、フレームによって開始されなかった場合は null の場合もあります。開始フレームがイベントが発行される前に削除された場合も null になる可能性があります。
urlstring 非推奨isInPlaceboolean 非推奨isMainFrameboolean 非推奨frameProcessIdInteger 非推奨frameRoutingIdInteger 非推奨
ナビゲーション中にサーバー側のリダイレクトが発生したときに発行されます。たとえば、302 リダイレクトなどです。
このイベントは、did-start-navigation の後、および同じナビゲーションの did-redirect-navigation イベントの前に常に発行されます。
event.preventDefault() を呼び出すと、ナビゲーション (リダイレクトだけでなく) が阻止されます。
イベント: 'did-redirect-navigation'
返り値
detailsEvent<>urlstring - フレームが移動しようとしている URL です。isSameDocumentboolean - ドキュメントを変更せずにナビゲーションが発生したかどうか。同じドキュメント内のナビゲーションの例としては、参照フラグメントナビゲーション、pushState/replaceState、および同じページ履歴ナビゲーションがあります。isMainFrameboolean - ナビゲーションがメインフレームで発生している場合は true です。frameWebFrameMain - ナビゲートされるフレームです。initiatorWebFrameMain (オプション) - ナビゲーションを開始したフレームです。親フレーム (フレームの名前付きのwindow.openを介したなど) の場合もあれば、フレームによって開始されなかった場合は null の場合もあります。開始フレームがイベントが発行される前に削除された場合も null になる可能性があります。
urlstring 非推奨isInPlaceboolean 非推奨isMainFrameboolean 非推奨frameProcessIdInteger 非推奨frameRoutingIdInteger 非推奨
ナビゲーション中にサーバー側のリダイレクトが発生した後に発行されます。たとえば、302 リダイレクトなどです。
このイベントは阻止できません。リダイレクトを阻止したい場合は、上記の will-redirect イベントを確認する必要があります。
イベント: 'did-navigate'
返り値
eventイベントurlstringhttpResponseCodeInteger - HTTP ナビゲーション以外の場合は -1httpStatusTextstring - HTTP ナビゲーション以外の場合は空
メインフレームのナビゲーションが完了したときに発行されます。
このイベントは、アンカーリンクをクリックしたり、window.location.hash を更新したりするなどのページ内ナビゲーションでは発行されません。この目的には did-navigate-in-page イベントを使用してください。
イベント: 'did-frame-navigate'
返り値
eventイベントurlstringhttpResponseCodeInteger - HTTP ナビゲーション以外の場合は -1httpStatusTextstring - HTTP ナビゲーション以外の場合は空、isMainFrame真偽値frameProcessId整数frameRoutingId整数
任意のフレームのナビゲーションが完了したときに発行されます。
このイベントは、アンカーリンクをクリックしたり、window.location.hash を更新したりするなどのページ内ナビゲーションでは発行されません。この目的には did-navigate-in-page イベントを使用してください。
イベント: 'did-navigate-in-page'
返り値
eventイベントurlstringisMainFrame真偽値frameProcessId整数frameRoutingId整数
任意のフレームでページ内ナビゲーションが発生したときに発行されます。
ページ内ナビゲーションが発生すると、ページ URL は変更されますが、ページ外へのナビゲーションは発生しません。これが起こる例としては、アンカーリンクがクリックされた場合や、DOM の hashchange イベントがトリガーされた場合などがあります。
イベント: 'will-prevent-unload'
返り値
eventイベント
beforeunload イベントハンドラーがページアンロードをキャンセルしようとしているときに発行されます。
event.preventDefault() を呼び出すと、beforeunload イベントハンドラーが無視され、ページのアンロードが許可されます。
const { BrowserWindow, dialog } = require('electron')
const win = new BrowserWindow({ width: 800, height: 600 })
win.webContents.on('will-prevent-unload', (event) => {
const choice = dialog.showMessageBoxSync(win, {
type: 'question',
buttons: ['Leave', 'Stay'],
title: 'Do you want to leave this site?',
message: 'Changes you made may not be saved.',
defaultId: 0,
cancelId: 1
})
const leave = (choice === 0)
if (leave) {
event.preventDefault()
}
})
注: これは BrowserView に対して発行されますが、尊重されません。これは、仕様に従って、BrowserView のライフサイクルを所有する BrowserWindow に関連付けないことを選択したためです。
イベント: 'render-process-gone'
返り値
eventイベントdetailsRenderProcessGoneDetails
レンダラープロセスが予期せず消えたときに発行されます。これは通常、クラッシュまたは強制終了されたためです。
イベント: 'unresponsive'
Web ページが応答しなくなったときに発行されます。
イベント: 'responsive'
応答しなくなった Web ページが再び応答するようになったときに発行されます。
イベント: 'plugin-crashed'
返り値
eventイベントnamestringversionstring
プラグインプロセスがクラッシュしたときに発行されます。
イベント: 'destroyed'
webContents が破棄されたときに発行されます。
イベント: 'input-event'
返り値
eventイベントinputEventInputEvent
入力イベントが WebContents に送信されたときに発行されます。詳細については、InputEvent を参照してください。
イベント: 'before-input-event'
返り値
eventイベントinputObject - 入力プロパティ。typestring -keyUpまたはkeyDownのいずれか。keystring - KeyboardEvent.key と同等。codestring - KeyboardEvent.code と同等。isAutoRepeatboolean - KeyboardEvent.repeat と同等。isComposingboolean - KeyboardEvent.isComposing と同等。shiftboolean - KeyboardEvent.shiftKey と同等。controlboolean - KeyboardEvent.controlKey と同等。altboolean - KeyboardEvent.altKey と同等。metaboolean - KeyboardEvent.metaKey と同等。locationnumber - KeyboardEvent.location と同等。modifiersstring[] - InputEvent.modifiers を参照してください。
ページで keydown および keyup イベントをディスパッチする前に発行されます。event.preventDefault を呼び出すと、ページの keydown/keyup イベントとメニューショートカットが阻止されます。
メニューショートカットのみを阻止するには、setIgnoreMenuShortcuts を使用します。
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ width: 800, height: 600 })
win.webContents.on('before-input-event', (event, input) => {
// For example, only enable application menu keyboard shortcuts when
// Ctrl/Cmd are down.
win.webContents.setIgnoreMenuShortcuts(!input.control && !input.meta)
})
イベント: 'enter-html-full-screen'
HTML API によってトリガーされたフルスクリーン状態にウィンドウが入ったときに発行されます。
イベント: 'leave-html-full-screen'
HTML API によってトリガーされたフルスクリーン状態からウィンドウが出たときに発行されます。
イベント: 'zoom-changed'
返り値
eventイベントzoomDirectionstring -inまたはoutを指定できます。
ユーザーがマウスホイールを使用してズームレベルの変更を要求したときに発行されます。
イベント: 'blur'
WebContents がフォーカスを失ったときに発行されます。
イベント: 'focus'
WebContents がフォーカスを取得したときに発行されます。
macOS では、フォーカスがあるということは、WebContents がウィンドウのファーストレスポンダーであることを意味します。そのため、ウィンドウ間でフォーカスを切り替えても、各ウィンドウのファーストレスポンダーは変更されないため、WebContents の focus および blur イベントはトリガーされません。
WebContents の focus および blur イベントは、同じウィンドウ内の異なる WebContents と BrowserView の間のフォーカス変更を検出する場合にのみ使用する必要があります。
イベント: 'devtools-open-url'
返り値
eventイベントurlstring - クリックまたは選択されたリンクのURL。
DevToolsでリンクがクリックされたとき、またはそのコンテキストメニューでリンクに対して「新しいタブで開く」が選択されたときに発生します。
イベント: 'devtools-search-query'
返り値
eventイベントquerystring - 検索するテキスト。
コンテキストメニューでテキストに対して「検索」が選択されたときに発生します。
イベント: 'devtools-opened'
DevToolsが開かれたときに発生します。
イベント: 'devtools-closed'
DevToolsが閉じられたときに発生します。
イベント: 'devtools-focused'
DevToolsがフォーカスされた/開かれたときに発生します。
イベント: 'certificate-error'
返り値
eventイベントurlstringerrorstring - エラーコード。certificateCertificatecallbackFunctionisTrustedboolean - 証明書が信頼できると見なせるかどうかを示します。
isMainFrame真偽値
url のcertificateの検証に失敗したときに発生します。
使い方は、app の certificate-error イベントと同じです。
イベント: 'select-client-certificate'
返り値
eventイベントurlURLcertificateListCertificate[]callbackFunctioncertificateCertificate - 指定されたリストの証明書である必要があります。
クライアント証明書が要求されたときに発生します。
使い方は、app の select-client-certificate イベントと同じです。
イベント: 'login'
返り値
eventイベントauthenticationResponseDetailsオブジェクトurlURL
authInfoオブジェクトisProxybooleanschemestringhoststringportIntegerrealmstring
callbackFunctionusernamestring (オプション)passwordstring (オプション)
webContents がベーシック認証を行いたいときに発生します。
使い方は、app の login イベントと同じです。
イベント: 'found-in-page'
返り値
eventイベントresultオブジェクトrequestIdIntegeractiveMatchOrdinalInteger - アクティブなマッチの位置。matchesInteger - マッチの数。selectionAreaRectangle - 最初のマッチ領域の座標。finalUpdateboolean
webContents.findInPage リクエストの結果が利用可能になったときに発生します。
イベント: 'media-started-playing'
メディアの再生が開始されたときに発生します。
イベント: 'media-paused'
メディアが一時停止または再生を完了したときに発生します。
イベント: 'audio-state-changed'
返り値
eventEvent<>audibleboolean - 1つ以上のフレームまたは子webContentsがオーディオを出力している場合はtrue。
メディアが可聴または不可聴になったときに発生します。
イベント: 'did-change-theme-color'
返り値
eventイベントcolor(string | null) - テーマカラーは '#rrggbb' の形式です。テーマカラーが設定されていない場合はnullです。
ページのテーマカラーが変更されたときに発生します。これは通常、metaタグに出会ったためです。
<meta name='theme-color' content='#ff0000'>
イベント: 'update-target-url'
返り値
eventイベントurlstring
マウスがリンク上に移動したとき、またはキーボードがリンクにフォーカスを移動したときに発生します。
イベント: 'cursor-changed'
返り値
eventイベントtypestringimageNativeImage (オプション)scaleFloat (オプション) - カスタムカーソルのスケーリングファクター。sizeSize (オプション) -imageのサイズ。hotspotPoint (オプション) - カスタムカーソルのホットスポットの座標。
カーソルのタイプが変更されたときに発生します。type パラメータは、pointer、crosshair、hand、text、wait、help、e-resize、n-resize、ne-resize、nw-resize、s-resize、se-resize、sw-resize、w-resize、ns-resize、ew-resize、nesw-resize、nwse-resize、col-resize、row-resize、m-panning、m-panning-vertical、m-panning-horizontal、e-panning、n-panning、ne-panning、nw-panning、s-panning、se-panning、sw-panning、w-panning、move、vertical-text、cell、context-menu、alias、progress、nodrop、copy、none、not-allowed、zoom-in、zoom-out、grab、grabbing、custom、null、drag-drop-none、drag-drop-move、drag-drop-copy、drag-drop-link、ns-no-resize、ew-no-resize、nesw-no-resize、nwse-no-resize、または default になります。
type パラメータが custom の場合、image パラメータは NativeImage のカスタムカーソル画像を持ち、scale、size、hotspot はカスタムカーソルに関する追加情報を保持します。
イベント: 'context-menu'
返り値
eventイベントparamsオブジェクトxInteger - x 座標。yInteger - y 座標。frameWebFrameMain - コンテキストメニューが呼び出されたフレーム。linkURLstring - コンテキストメニューが呼び出されたノードを囲むリンクのURL。linkTextstring - リンクに関連付けられたテキスト。リンクの内容が画像の場合は空の文字列になる可能性があります。pageURLstring - コンテキストメニューが呼び出された最上位ページのURL。frameURLstring - コンテキストメニューが呼び出されたサブフレームのURL。srcURLstring - コンテキストメニューが呼び出された要素のソースURL。ソースURLを持つ要素は、画像、オーディオ、ビデオです。mediaTypestring - コンテキストメニューが呼び出されたノードのタイプ。none、image、audio、video、canvas、file、またはpluginになります。hasImageContentsboolean - コンテキストメニューが呼び出された画像に空でない内容があるかどうか。isEditableboolean - コンテキストが編集可能かどうか。selectionTextstring - コンテキストメニューが呼び出された選択範囲のテキスト。titleTextstring - コンテキストメニューが呼び出された選択範囲のタイトルテキスト。altTextstring - コンテキストメニューが呼び出された選択範囲のaltテキスト。suggestedFilenamestring - コンテキストメニューの「名前を付けてリンク先を保存」オプションを使用してファイルを保存するときに使用する推奨ファイル名。selectionRectRectangle - 選択範囲のドキュメント空間内の座標を表す矩形。selectionStartOffsetnumber - 選択テキストの開始位置。referrerPolicyReferrer - メニューが呼び出されたフレームのリファラーポリシー。misspelledWordstring - カーソルの下にあるスペルミスの単語(存在する場合)。dictionarySuggestionsstring[] -misspelledWordを置き換えるためにユーザーに表示する推奨単語の配列。スペルミスした単語があり、スペルチェッカーが有効になっている場合にのみ使用できます。frameCharsetstring - メニューが呼び出されたフレームの文字エンコーディング。formControlTypestring - コンテキストメニューが呼び出されたソース。可能な値は、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です。spellcheckEnabledboolean - コンテキストが編集可能である場合、スペルチェックが有効になっているかどうか。menuSourceTypestring - コンテキストメニューを呼び出した入力ソース。none、mouse、keyboard、touch、touchMenu、longPress、longTap、touchHandle、stylus、adjustSelection、またはadjustSelectionResetになります。mediaFlagsオブジェクト - コンテキストメニューが呼び出されたメディア要素のフラグ。inErrorboolean - メディア要素がクラッシュしたかどうか。isPausedboolean - メディア要素が一時停止されているかどうか。isMutedboolean - メディア要素がミュートされているかどうか。hasAudioboolean - メディア要素にオーディオがあるかどうか。isLoopingboolean - メディア要素がループしているかどうか。isControlsVisibleboolean - メディア要素のコントロールが表示されているかどうか。canToggleControlsboolean - メディア要素のコントロールが切り替え可能かどうか。canPrintboolean - メディア要素を印刷できるかどうか。canSaveboolean - メディア要素をダウンロードできるかどうか。canShowPictureInPictureboolean - メディア要素でピクチャーインピクチャーを表示できるかどうか。isShowingPictureInPictureboolean - メディア要素が現在ピクチャーインピクチャーを表示しているかどうか。canRotateboolean - メディア要素を回転できるかどうか。canLoopboolean - メディア要素をループできるかどうか。
editFlagsオブジェクト - これらのフラグは、レンダラーが対応するアクションを実行できると信じているかどうかを示します。canUndoboolean - レンダラーが元に戻せると信じているかどうか。canRedoboolean - レンダラーがやり直せると信じているかどうか。canCutboolean - レンダラーが切り取りできると信じているかどうか。canCopyboolean - レンダラーがコピーできると信じているかどうか。canPasteboolean - レンダラーが貼り付けできると信じているかどうか。canDeleteboolean - レンダラーが削除できると信じているかどうか。canSelectAllboolean - レンダラーがすべて選択できると信じているかどうか。canEditRichlyboolean - レンダラーがテキストをリッチ編集できると信じているかどうか。
処理する必要がある新しいコンテキストメニューがある場合に発生します。
イベント: 'select-bluetooth-device'
返り値
eventイベントdevicesBluetoothDevice[]callbackFunctiondeviceIdstring
navigator.bluetooth.requestDevice の呼び出し時にBluetoothデバイスを選択する必要がある場合に発生します。callback は、選択するデバイスの deviceId を指定して呼び出す必要があります。callback に空の文字列を渡すと、リクエストがキャンセルされます。
このイベントのイベントリスナーが追加されていない場合、またはこのイベントを処理するときに event.preventDefault が呼び出されない場合は、最初に使用可能なデバイスが自動的に選択されます。
Bluetoothの性質上、navigator.bluetooth.requestDevice が呼び出されたときにデバイスをスキャンするには時間がかかる場合があり、callback がデバイスIDまたはリクエストをキャンセルする空の文字列で呼び出されるまで、select-bluetooth-device が複数回発生します。
const { app, BrowserWindow } = require('electron')
let win = null
app.whenReady().then(() => {
win = new BrowserWindow({ width: 800, height: 600 })
win.webContents.on('select-bluetooth-device', (event, deviceList, callback) => {
event.preventDefault()
const result = deviceList.find((device) => {
return device.deviceName === 'test'
})
if (!result) {
// The device wasn't found so we need to either wait longer (eg until the
// device is turned on) or cancel the request by calling the callback
// with an empty string.
callback('')
} else {
callback(result.deviceId)
}
})
})
イベント: 'paint'
返り値
eventイベントdirtyRectRectangleimageNativeImage - フレーム全体の画像データ。
新しいフレームが生成されたときに発生します。バッファにはダーティ領域のみが渡されます。
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ webPreferences: { offscreen: true } })
win.webContents.on('paint', (event, dirty, image) => {
// updateBitmap(dirty, image.getBitmap())
})
win.loadURL('https://github.com')
イベント: 'devtools-reload-page'
devtoolsウィンドウがwebContentsに再読み込みを指示したときに発生します
イベント: 'will-attach-webview'
返り値
eventイベントwebPreferencesWebPreferences - ゲストページで使用されるWeb設定。このオブジェクトは、ゲストページの設定を調整するために変更できます。paramsRecord<string, string> -srcURLなど、その他の<webview>パラメータ。このオブジェクトは、ゲストページのパラメータを調整するために変更できます。
<webview>のWebコンテンツがこのWebコンテンツにアタッチされるときに発生します。event.preventDefault() を呼び出すと、ゲストページが破棄されます。
このイベントを使用して、<webview>の webContents の webPreferences をロード前に構成できます。また、<webview> 属性を使用して設定できない設定を設定する機能を提供します。
イベント: 'did-attach-webview'
返り値
eventイベントwebContentsWebContents -<webview>で使用されるゲストWebコンテンツ。
<webview> がこのWebコンテンツにアタッチされたときに発生します。
イベント: 'console-message'
返り値
eventイベントlevelInteger - ログレベル。0〜3。順番にverbose、info、warning、errorに対応します。messagestring - 実際のコンソールメッセージlineInteger - このコンソールメッセージをトリガーしたソースの行番号sourceIdstring
関連付けられたウィンドウがコンソールメッセージをログに記録するときに発生します。
イベント: 'preload-error'
返り値
eventイベントpreloadPathstringerrorError
プリロードスクリプト preloadPath が未処理の例外 error をスローしたときに発生します。
イベント: 'ipc-message'
返り値
eventIpcMainEventchannelstring...argsany[]
レンダラープロセスが ipcRenderer.send() を介して非同期メッセージを送信したときに発生します。
このWebContentsから特定のIPCメッセージに応答するための IpcMain のようなインターフェイスを提供するwebContents.ipcも参照してください。
イベント: 'ipc-message-sync'
返り値
eventIpcMainEventchannelstring...argsany[]
レンダラープロセスが ipcRenderer.sendSync() を介して同期メッセージを送信したときに発生します。
このWebContentsから特定のIPCメッセージに応答するための IpcMain のようなインターフェイスを提供するwebContents.ipcも参照してください。
イベント: 'preferred-size-changed'
返り値
eventイベントpreferredSizeSize - スクロールを必要とせずに、ドキュメントのレイアウトを含めるために必要な最小サイズ。
WebContents の推奨サイズが変更されたときに発生します。
このイベントは、webPreferences で enablePreferredSizeMode が true に設定されている場合にのみ発生します。
イベント: 'frame-created'
返り値
eventイベントdetailsオブジェクトframeWebFrameMain
ページ内で mainFrame、<iframe>、またはネストされた <iframe> がロードされたときに発生します。
インスタンスメソッド
contents.loadURL(url[, options])
urlstring
戻り値 Promise<void> - ページがロードを完了すると(did-finish-loadを参照)、promiseは解決され、ページがロードに失敗すると(did-fail-loadを参照)拒否されます。未処理の拒否エラーを回避するために、noop拒否ハンドラーがすでに追加されています。
ウィンドウに url をロードします。url には、http:// や file:// などのプロトコルプレフィックスが含まれている必要があります。ロードでHTTPキャッシュをバイパスする必要がある場合は、それを実現するために pragma ヘッダーを使用します。
const win = new BrowserWindow()
const options = { extraHeaders: 'pragma: no-cache\n' }
win.webContents.loadURL('https://github.com', options)
contents.loadFile(filePath[, options])
filePathstring
戻り値 Promise<void> - ページがロードを完了すると(did-finish-loadを参照)、promiseは解決され、ページがロードに失敗すると(did-fail-loadを参照)拒否されます。
指定されたファイルをウィンドウにロードします。filePath は、アプリケーションのルートを基準としたHTMLファイルへのパスである必要があります。たとえば、次のようなアプリケーション構造の場合
| root
| - package.json
| - src
| - main.js
| - index.html
次のようなコードが必要です
const win = new BrowserWindow()
win.loadFile('src/index.html')
contents.downloadURL(url[, options])
urlstring
ナビゲーションせずに、url のリソースのダウンロードを開始します。session の will-download イベントがトリガーされます。
contents.getURL()
戻り値 string - 現在のWebページのURL。
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ width: 800, height: 600 })
win.loadURL('https://github.com').then(() => {
const currentURL = win.webContents.getURL()
console.log(currentURL)
})
contents.getTitle()
戻り値 string - 現在のWebページのタイトル。
contents.isDestroyed()
戻り値 boolean - Webページが破棄されたかどうか。
contents.close([opts])
optsオブジェクト(オプション)waitForBeforeUnloadboolean - trueの場合、ページを閉じる前にbeforeunloadイベントを発生させます。ページがアンロードを防止した場合、WebContentsは閉じられません。ページがアンロードの防止を要求すると、will-prevent-unloadが発生します。
Webコンテンツが window.close() を呼び出したかのように、ページを閉じます。
ページが正常に閉じられた場合(つまり、アンロードがページによって防止されない場合、または waitForBeforeUnload がfalseまたは未指定の場合)、WebContentsは破棄され、使用できなくなります。destroyed イベントが発生します。
contents.focus()
Webページにフォーカスを設定します。
contents.isFocused()
戻り値 boolean - Webページにフォーカスが設定されているかどうか。
contents.isLoading()
booleanを返します - ウェブページがまだリソースを読み込んでいるかどうか。
contents.isLoadingMainFrame()
booleanを返します - メインフレーム(およびその中のiframeやフレームだけではなく)がまだ読み込み中かどうか。
contents.isWaitingForResponse()
booleanを返します - ウェブページがページのメインリソースからの最初の応答を待機しているかどうか。
contents.stop()
保留中のナビゲーションを停止します。
contents.reload()
現在のウェブページをリロードします。
contents.reloadIgnoringCache()
現在のページをリロードし、キャッシュを無視します。
contents.canGoBack() 非推奨
履歴
| バージョン | 変更点 |
|---|---|
>=32.0.0 | API DEPRECATED |
booleanを返します - ブラウザが前のウェブページに戻れるかどうか。
非推奨: 新しいcontents.navigationHistory.canGoBack APIを使用する必要があります。
contents.canGoForward() 非推奨
履歴
| バージョン | 変更点 |
|---|---|
>=32.0.0 | API DEPRECATED |
booleanを返します - ブラウザが次のウェブページに進めるかどうか。
非推奨: 新しいcontents.navigationHistory.canGoForward APIを使用する必要があります。
contents.canGoToOffset(offset) 非推奨
履歴
| バージョン | 変更点 |
|---|---|
>=32.0.0 | API DEPRECATED |
offset整数
booleanを返します - ウェブページがoffsetに移動できるかどうか。
非推奨: 新しいcontents.navigationHistory.canGoToOffset APIを使用する必要があります。
contents.clearHistory() 非推奨
履歴
| バージョン | 変更点 |
|---|---|
>=32.0.0 | API DEPRECATED |
ナビゲーション履歴をクリアします。
非推奨: 新しいcontents.navigationHistory.clear APIを使用する必要があります。
contents.goBack() 非推奨
履歴
| バージョン | 変更点 |
|---|---|
>=32.0.0 | API DEPRECATED |
ブラウザを前のウェブページに戻します。
非推奨: 新しいcontents.navigationHistory.goBack APIを使用する必要があります。
contents.goForward() 非推奨
履歴
| バージョン | 変更点 |
|---|---|
>=32.0.0 | API DEPRECATED |
ブラウザを次のウェブページに進めます。
非推奨: 新しいcontents.navigationHistory.goForward APIを使用する必要があります。
contents.goToIndex(index) 非推奨
履歴
| バージョン | 変更点 |
|---|---|
>=32.0.0 | API DEPRECATED |
index整数
指定された絶対ウェブページインデックスにブラウザをナビゲートします。
非推奨: 新しいcontents.navigationHistory.goToIndex APIを使用する必要があります。
contents.goToOffset(offset) 非推奨
履歴
| バージョン | 変更点 |
|---|---|
>=32.0.0 | API DEPRECATED |
offset整数
「現在のエントリ」から指定されたオフセットにナビゲートします。
非推奨: 新しいcontents.navigationHistory.goToOffset APIを使用する必要があります。
contents.isCrashed()
booleanを返します - レンダラープロセスがクラッシュしたかどうか。
contents.forcefullyCrashRenderer()
現在このwebContentsをホストしているレンダラープロセスを強制的に終了させます。これにより、reason=killed || reason=crashedでrender-process-goneイベントが発行されます。一部のwebContentsはレンダラープロセスを共有するため、このメソッドを呼び出すと、他のwebContentsのホストプロセスもクラッシュする可能性があることに注意してください。
このメソッドを呼び出した直後にreload()を呼び出すと、強制的に新しいプロセスでリロードが行われます。これは、プロセスが不安定または使用できない場合、例えばunresponsiveイベントから回復するために使用する必要があります。
const win = new BrowserWindow()
win.webContents.on('unresponsive', async () => {
const { response } = await dialog.showMessageBox({
message: 'App X has become unresponsive',
title: 'Do you want to try forcefully reloading the app?',
buttons: ['OK', 'Cancel'],
cancelId: 1
})
if (response === 0) {
win.webContents.forcefullyCrashRenderer()
win.webContents.reload()
}
})
contents.setUserAgent(userAgent)
userAgent文字列
このウェブページのユーザーエージェントを上書きします。
contents.getUserAgent()
stringを返します - このウェブページのユーザーエージェント。
contents.insertCSS(css[, options])
css文字列
Promise<string>を返します - 挿入されたCSSのキーで解決されるPromise。後でcontents.removeInsertedCSS(key)を使用してCSSを削除できます。
現在のウェブページにCSSを挿入し、挿入されたスタイルシートの一意のキーを返します。
const win = new BrowserWindow()
win.webContents.on('did-finish-load', () => {
win.webContents.insertCSS('html, body { background-color: #f00; }')
})
contents.removeInsertedCSS(key)
key文字列
Promise<void>を返します - 削除が成功した場合に解決します。
現在のウェブページから挿入されたCSSを削除します。スタイルシートは、contents.insertCSS(css)から返されるキーによって識別されます。
const win = new BrowserWindow()
win.webContents.on('did-finish-load', async () => {
const key = await win.webContents.insertCSS('html, body { background-color: #f00; }')
win.webContents.removeInsertedCSS(key)
})
contents.executeJavaScript(code[, userGesture])
code文字列userGestureboolean(オプション) - デフォルトはfalseです。
Promise<any>を返します - 実行されたコードの結果で解決されるPromise。または、コードの結果が拒否されたPromiseの場合は拒否されます。
ページ内でcodeを評価します。
ブラウザウィンドウでは、requestFullScreenなどの一部のHTML APIは、ユーザーからのジェスチャによってのみ呼び出すことができます。userGestureをtrueに設定すると、この制限が解除されます。
コードの実行は、ウェブページの読み込みが停止するまで中断されます。
const win = new BrowserWindow()
win.webContents.executeJavaScript('fetch("https://jsonplaceholder.typicode.com/users/1").then(resp => resp.json())', true)
.then((result) => {
console.log(result) // Will be the JSON object from the fetch call
})
contents.executeJavaScriptInIsolatedWorld(worldId, scripts[, userGesture])
worldId整数 - JavaScriptを実行するワールドのID。0はデフォルトのワールドで、999はElectronのcontextIsolation機能で使用されるワールドです。ここに任意の整数を指定できます。scriptsWebSource[]userGestureboolean(オプション) - デフォルトはfalseです。
Promise<any>を返します - 実行されたコードの結果で解決されるPromise。または、コードの結果が拒否されたPromiseの場合は拒否されます。
executeJavaScriptと同様に機能しますが、分離されたコンテキストでscriptsを評価します。
contents.setIgnoreMenuShortcuts(ignore)
ignoreboolean
このウェブコンテンツにフォーカスがある間、アプリケーションメニューのショートカットを無視します。
contents.setWindowOpenHandler(handler)
-
handlerFunction<WindowOpenHandlerResponse>detailsオブジェクトurl文字列 -window.open()に渡されるURLの解決済みバージョン。例:window.open('foo')でウィンドウを開くと、https://the-origin/the/current/path/fooのようなものが生成されます。frameName文字列 -window.open()で提供されるウィンドウの名前features文字列 -window.open()に提供されるウィンドウ機能のコンマ区切りリスト。dispositionstring -default、foreground-tab、background-tab、new-window、またはotherを指定できます。referrerReferrer - 新しいウィンドウに渡されるリファラーです。リファラーポリシーによっては、Refererヘッダーが送信される場合と送信されない場合があります。postBodyPostBody (オプション) - 新しいウィンドウに送信されるポストデータと、設定される適切なヘッダーです。ポストデータを送信しない場合は、値はnullになります。ウィンドウがtarget=_blankを設定したフォームによって作成されている場合にのみ定義されます。
WindowOpenHandlerResponseを返します -{ action: 'deny' }に設定すると、新しいウィンドウの作成がキャンセルされます。{ action: 'allow' }は、新しいウィンドウの作成を許可します。null、undefined、または認識された「action」値のないオブジェクトなど、認識されない値を返すと、コンソールエラーが発生し、{action: 'deny'}を返すのと同じ効果があります。
レンダラーによって新しいウィンドウが要求される前に呼び出されます。例えば、window.open()、target="_blank"を持つリンク、リンクのshift+クリック、または<form target="_blank">を使用したフォームの送信などです。詳細およびdid-create-windowと組み合わせて使用する方法については、window.open()を参照してください。
新しいBrowserWindowの作成プロセスをカスタマイズして、代わりにメインウィンドウにアタッチされたBrowserViewにする方法を示す例
const { BrowserView, BrowserWindow } = require('electron')
const mainWindow = new BrowserWindow()
mainWindow.webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
createWindow: (options) => {
const browserView = new BrowserView(options)
mainWindow.addBrowserView(browserView)
browserView.setBounds({ x: 0, y: 0, width: 640, height: 480 })
return browserView.webContents
}
}
})
contents.setAudioMuted(muted)
mutedboolean
現在のウェブページのオーディオをミュートします。
contents.isAudioMuted()
booleanを返します - このページがミュートされているかどうか。
contents.isCurrentlyAudible()
booleanを返します - オーディオが現在再生されているかどうか。
contents.setZoomFactor(factor)
factorDouble - ズームファクター。デフォルトは1.0です。
ズームファクターを指定されたファクターに変更します。ズームファクターはズームパーセントを100で割ったものなので、300% = 3.0です。
ファクターは0.0より大きくなければなりません。
contents.getZoomFactor()
numberを返します - 現在のズームファクター。
contents.setZoomLevel(level)
levelnumber - ズームレベル。
ズームレベルを指定されたレベルに変更します。元のサイズは0で、それより上または下の増分は、それぞれ元のサイズの300%および50%のデフォルト制限まで、20%大きくまたは小さくズームすることを表します。この計算式はscale := 1.2 ^ levelです。
注意: Chromiumレベルでのズームポリシーは同一オリジンであり、特定のドメインのズームレベルは、同じドメインを持つすべてのウィンドウインスタンスに伝播します。ウィンドウのURLを区別することで、ウィンドウごとにズームを機能させることができます。
contents.getZoomLevel()
numberを返します - 現在のズームレベル。
contents.setVisualZoomLevelLimits(minimumLevel, maximumLevel)
minimumLevelnumbermaximumLevelnumber
Promise<void>を返します
ピンチ操作によるズームの最大レベルと最小レベルを設定します。
注意: ビジュアルズームはElectronではデフォルトで無効になっています。再度有効にするには、次を呼び出してください。
const win = new BrowserWindow()
win.webContents.setVisualZoomLevelLimits(1, 3)
contents.undo()
Webページで編集コマンドundoを実行します。
contents.redo()
Webページで編集コマンドredoを実行します。
contents.cut()
Webページで編集コマンドcutを実行します。
contents.copy()
Webページで編集コマンドcopyを実行します。
contents.centerSelection()
Webページ内の現在のテキスト選択を中央に表示します。
contents.copyImageAt(x, y)
xIntegeryInteger
指定された位置にある画像をクリップボードにコピーします。
contents.paste()
Webページで編集コマンドpasteを実行します。
contents.pasteAndMatchStyle()
Webページで編集コマンドpasteAndMatchStyleを実行します。
contents.delete()
Webページで編集コマンドdeleteを実行します。
contents.selectAll()
Webページで編集コマンドselectAllを実行します。
contents.unselect()
Webページで編集コマンドunselectを実行します。
contents.scrollToTop()
現在のwebContentsの一番上までスクロールします。
contents.scrollToBottom()
現在のwebContentsの一番下までスクロールします。
contents.adjustSelection(options)
フォーカスされたフレーム内の現在のテキスト選択の開始点と終了点を、指定された量だけ調整します。負の量を指定すると、選択範囲がドキュメントの先頭に移動し、正の量を指定すると、ドキュメントの末尾に移動します。
例
const win = new BrowserWindow()
// Adjusts the beginning of the selection 1 letter forward,
// and the end of the selection 5 letters forward.
win.webContents.adjustSelection({ start: 1, end: 5 })
// Adjusts the beginning of the selection 2 letters forward,
// and the end of the selection 3 letters backward.
win.webContents.adjustSelection({ start: 2, end: -3 })
win.webContents.adjustSelection({ start: 1, end: 5 })を呼び出す場合
変更前
変更後
contents.replace(text)
textstring
Webページで編集コマンドreplaceを実行します。
contents.replaceMisspelling(text)
textstring
Webページで編集コマンドreplaceMisspellingを実行します。
contents.insertText(text)
textstring
Promise<void>を返します
フォーカスされた要素にtextを挿入します。
contents.findInPage(text[, options])
textstring - 検索するコンテンツ。空であってはなりません。
Integerを返します - リクエストに使用されるリクエストID。
Webページ内のtextに一致するすべてを検索するリクエストを開始します。リクエストの結果は、found-in-pageイベントをサブスクライブすることで取得できます。
contents.stopFindInPage(action)
actionstring -webContents.findInPageリクエストの終了時に実行するアクションを指定します。clearSelection- 選択をクリアします。keepSelection- 選択を通常の選択に変換します。activateSelection- 選択ノードをフォーカスしてクリックします。
指定されたactionでwebContentsのfindInPageリクエストを停止します。
const win = new BrowserWindow()
win.webContents.on('found-in-page', (event, result) => {
if (result.finalUpdate) win.webContents.stopFindInPage('clearSelection')
})
const requestId = win.webContents.findInPage('api')
console.log(requestId)
contents.capturePage([rect, opts])
rectRectangle (optional) - キャプチャするページの領域。optsオブジェクト(オプション)stayHiddenboolean (optional) - ページを可視化せずに非表示のままにします。デフォルトはfalseです。stayAwakeboolean (optional) - システムをスリープさせずに、システムを起動状態に保ちます。デフォルトはfalseです。
Promise<NativeImage>を返します - NativeImageで解決されます
rect内のページのsnapshotをキャプチャします。rectを省略すると、表示されているページ全体がキャプチャされます。ページは、ブラウザウィンドウが非表示で、キャプチャカウントがゼロでない場合に表示されると見なされます。ページを非表示のままにする場合は、stayHiddenをtrueに設定する必要があります。
contents.isBeingCaptured()
booleanを返します - このページがキャプチャされているかどうか。キャプチャカウントが0より大きい場合にtrueを返します。
contents.getPrintersAsync()
システムプリンターリストを取得します。
Promise<PrinterInfo[]>を返します - PrinterInfo[]で解決されます
contents.print([options], [callback])
callbackFunction (オプション)successboolean - 印刷呼び出しが成功したかどうかを示します。failureReasonstring - 印刷に失敗した場合にコールバックされるエラーの説明。
カスタムの pageSize が渡された場合、Chromium は width_microns と height_microns のプラットフォーム固有の最小値を検証しようとします。幅と高さは両方とも最小 353 ミクロンである必要がありますが、一部のオペレーティングシステムではより大きくなる場合があります。
ウィンドウのウェブページを印刷します。silent が true に設定されている場合、deviceName が空であれば、Electron はシステムのデフォルトプリンターとデフォルトの印刷設定を選択します。
新しいページに強制的に印刷するには、page-break-before: always; CSS スタイルを使用します。
使用例
const win = new BrowserWindow()
const options = {
silent: true,
deviceName: 'My-Printer',
pageRanges: [{
from: 0,
to: 1
}]
}
win.webContents.print(options, (success, errorType) => {
if (!success) console.log(errorType)
})
contents.printToPDF(options)
Returns Promise<Buffer> - 生成された PDF データで解決します。
ウィンドウのウェブページを PDF として印刷します。
ウェブページで @page CSS アットルールが使用されている場合、landscape は無視されます。
webContents.printToPDF の例
const { app, BrowserWindow } = require('electron')
const fs = require('node:fs')
const path = require('node:path')
const os = require('node:os')
app.whenReady().then(() => {
const win = new BrowserWindow()
win.loadURL('https://github.com')
win.webContents.on('did-finish-load', () => {
// Use default printing options
const pdfPath = path.join(os.homedir(), 'Desktop', 'temp.pdf')
win.webContents.printToPDF({}).then(data => {
fs.writeFile(pdfPath, data, (error) => {
if (error) throw error
console.log(`Wrote PDF successfully to ${pdfPath}`)
})
}).catch(error => {
console.log(`Failed to write PDF to ${pdfPath}: `, error)
})
})
})
詳細については、Page.printToPdf を参照してください。
contents.addWorkSpace(path)
pathstring
指定されたパスを DevTools ワークスペースに追加します。DevTools の作成後に使用する必要があります。
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.webContents.on('devtools-opened', () => {
win.webContents.addWorkSpace(__dirname)
})
contents.removeWorkSpace(path)
pathstring
指定されたパスを DevTools ワークスペースから削除します。
contents.setDevToolsWebContents(devToolsWebContents)
devToolsWebContentsWebContents
DevTools を表示するターゲットの WebContents として devToolsWebContents を使用します。
devToolsWebContents はナビゲーションを実行していない必要があり、呼び出し後他の目的で使用しないでください。
デフォルトでは、Electron はネイティブビューで内部 WebContents を作成して DevTools を管理しますが、開発者はこれをほとんど制御できません。setDevToolsWebContents メソッドを使用すると、開発者は BrowserWindow、BrowserView、および <webview> タグを含め、任意の WebContents を使用してその中に DevTools を表示できます。
DevTools を閉じても devToolsWebContents は破棄されないことに注意してください。devToolsWebContents を破棄するのは呼び出し側の責任です。
<webview> タグで DevTools を表示する例
<html>
<head>
<style type="text/css">
* { margin: 0; }
#browser { height: 70%; }
#devtools { height: 30%; }
</style>
</head>
<body>
<webview id="browser" src="https://github.com"></webview>
<webview id="devtools" src="about:blank"></webview>
<script>
const { ipcRenderer } = require('electron')
const emittedOnce = (element, eventName) => new Promise(resolve => {
element.addEventListener(eventName, event => resolve(event), { once: true })
})
const browserView = document.getElementById('browser')
const devtoolsView = document.getElementById('devtools')
const browserReady = emittedOnce(browserView, 'dom-ready')
const devtoolsReady = emittedOnce(devtoolsView, 'dom-ready')
Promise.all([browserReady, devtoolsReady]).then(() => {
const targetId = browserView.getWebContentsId()
const devtoolsId = devtoolsView.getWebContentsId()
ipcRenderer.send('open-devtools', targetId, devtoolsId)
})
</script>
</body>
</html>
// Main process
const { ipcMain, webContents } = require('electron')
ipcMain.on('open-devtools', (event, targetContentsId, devtoolsContentsId) => {
const target = webContents.fromId(targetContentsId)
const devtools = webContents.fromId(devtoolsContentsId)
target.setDevToolsWebContents(devtools)
target.openDevTools()
})
BrowserWindow で DevTools を表示する例
const { app, BrowserWindow } = require('electron')
let win = null
let devtools = null
app.whenReady().then(() => {
win = new BrowserWindow()
devtools = new BrowserWindow()
win.loadURL('https://github.com')
win.webContents.setDevToolsWebContents(devtools.webContents)
win.webContents.openDevTools({ mode: 'detach' })
})
contents.openDevTools([options])
DevTools を開きます。
contents が <webview> タグの場合、mode はデフォルトで detach になります。空の mode を明示的に渡すと、最後に使用したドック状態を強制的に使用できます。
Windows では、Windows コントロールオーバーレイが有効になっている場合、DevTools は mode: 'detach' で開きます。
contents.closeDevTools()
DevTools を閉じます。
contents.isDevToolsOpened()
Returns boolean - DevTools が開いているかどうか。
contents.isDevToolsFocused()
Returns boolean - DevTools ビューにフォーカスがあるかどうか。
contents.getDevToolsTitle()
Returns string - DevTools ウィンドウの現在のタイトル。これは DevTools が undocked または detach モードで開いている場合にのみ表示されます。
contents.setDevToolsTitle(title)
title文字列
DevTools ウィンドウのタイトルを title に変更します。これは DevTools が undocked または detach モードで開いている場合にのみ表示されます。
contents.toggleDevTools()
開発者ツールを切り替えます。
contents.inspectElement(x, y)
xIntegeryInteger
位置 (x, y) の要素の検査を開始します。
contents.inspectSharedWorker()
共有ワーカーコンテキストの開発者ツールを開きます。
contents.inspectSharedWorkerById(workerId)
workerIdstring
ID に基づいて共有ワーカーを検査します。
contents.getAllSharedWorkers()
Returns SharedWorkerInfo[] - すべての共有ワーカーに関する情報。
contents.inspectServiceWorker()
サービスワーカーコンテキストの開発者ツールを開きます。
contents.send(channel, ...args)
channelstring...argsany[]
引数とともに channel を介して、レンダラープロセスに非同期メッセージを送信します。引数は、構造化クローンアルゴリズムと、postMessage と同様にシリアライズされるため、プロトタイプチェーンは含まれません。関数、Promise、Symbol、WeakMap、または WeakSet を送信すると、例外がスローされます。
DOM オブジェクトや特別な Electron オブジェクトなど、非標準の JavaScript 型を送信すると、例外がスローされます。
詳細については、Electron の IPC ガイドを参照してください。
contents.sendToFrame(frameId, channel, ...args)
frameIdInteger | [number, number] - 送信するフレームの ID。または、フレームがメインフレームとは異なるプロセスにある場合は、[processId, frameId]のペア。channelstring...argsany[]
channel を介して、レンダラープロセスの特定のフレームに引数とともに非同期メッセージを送信します。引数は、構造化クローンアルゴリズムを使用してシリアライズされます。postMessage と同様に、プロトタイプチェーンは含まれません。関数、Promise、シンボル、WeakMap、または WeakSet を送信すると、例外がスローされます。
注意: DOMオブジェクトや特別なElectronオブジェクトなど、非標準のJavaScript型を送信すると、例外がスローされます。
レンダラープロセスは、ipcRenderer モジュールを使用して channel をリッスンすることでメッセージを処理できます。
特定のレンダラーコンテキストの frameId を取得するには、webFrame.routingId の値を使用する必要があります。例:
// In a renderer process
console.log('My frameId is:', require('electron').webFrame.routingId)
メインプロセスで受信するすべてのIPCメッセージから frameId を読み取ることもできます。
// In the main process
ipcMain.on('ping', (event) => {
console.info('Message came from frameId:', event.frameId)
})
contents.postMessage(channel, message, [transfer])
channelstringmessageanytransferMessagePortMain[] (オプション)
オプションで、0個以上のMessagePortMainオブジェクトの所有権を移転しながら、メッセージをレンダラープロセスに送信します。
移転されたMessagePortMainオブジェクトは、発生したイベントのportsプロパティにアクセスすることで、レンダラープロセスで利用できます。レンダラーに到着すると、ネイティブDOMのMessagePortオブジェクトになります。
例:
// Main process
const win = new BrowserWindow()
const { port1, port2 } = new MessageChannelMain()
win.webContents.postMessage('port', { message: 'hello' }, [port1])
// Renderer process
ipcRenderer.on('port', (e, msg) => {
const [port] = e.ports
// ...
})
contents.enableDeviceEmulation(parameters)
parametersObjectscreenPositionstring - エミュレートする画面タイプを指定します(デフォルト:desktop)。desktop- デスクトップ画面タイプ。mobile- モバイル画面タイプ。
screenSizeSize - エミュレートされた画面サイズを設定します(screenPosition == mobile)。viewPositionPoint - 画面上のビューの位置を設定します(screenPosition == mobile)(デフォルト:{ x: 0, y: 0 })。deviceScaleFactorInteger - デバイススケールファクターを設定します(ゼロの場合は、元のデバイススケールファクターがデフォルトになります)(デフォルト:0)。viewSizeSize - エミュレートされたビューサイズを設定します(空の場合はオーバーライドなし)。scaleFloat - 利用可能なスペース内でのエミュレートされたビューのスケール(ビューモードに合わせない場合)(デフォルト:1)。
指定されたパラメータでデバイスエミュレーションを有効にします。
contents.disableDeviceEmulation()
webContents.enableDeviceEmulation で有効になっているデバイスエミュレーションを無効にします。
contents.sendInputEvent(inputEvent)
inputEventMouseInputEvent | MouseWheelInputEvent | KeyboardInputEvent
ページに入力eventを送信します。注意: sendInputEvent()を機能させるには、コンテンツを含むBrowserWindowがフォーカスされている必要があります。
contents.beginFrameSubscription([onlyDirty ,]callback)
onlyDirtyboolean (オプション) - デフォルトはfalse。callbackFunctionimageNativeImagedirtyRectRectangle
プレゼンテーションイベントとキャプチャされたフレームのサブスクリプションを開始します。プレゼンテーションイベントが発生すると、callback は callback(image, dirtyRect) で呼び出されます。
image は、キャプチャされたフレームを格納するNativeImageのインスタンスです。
dirtyRect は、ページのどの部分が再描画されたかを記述する x, y, width, height プロパティを持つオブジェクトです。onlyDirty が true に設定されている場合、image には再描画された領域のみが含まれます。onlyDirty のデフォルトは false です。
contents.endFrameSubscription()
フレームプレゼンテーションイベントのサブスクリプションを終了します。
contents.startDrag(item)
itemObjectfilestring - ドラッグ中のファイルのパス。filesstring[] (オプション) - ドラッグ中のファイルのパス。(filesはfileフィールドを上書きします)iconNativeImage | string - macOSでは、画像は空でない必要があります。
現在のドラッグアンドドロップ操作のドラッグアイテムとしてitemを設定します。fileはドラッグするファイルの絶対パスであり、iconはドラッグ時にカーソルの下に表示される画像です。
contents.savePage(fullPath, saveType)
fullPathstring - 絶対ファイルパス。saveTypestring - 保存タイプを指定します。HTMLOnly- ページのHTMLのみを保存します。HTMLComplete- 完全なHTMLページを保存します。MHTML- 完全なHTMLページをMHTMLとして保存します。
Promise<void> を返します - ページが保存された場合に解決されます。
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.loadURL('https://github.com')
win.webContents.on('did-finish-load', async () => {
win.webContents.savePage('/tmp/test.html', 'HTMLComplete').then(() => {
console.log('Page was saved successfully.')
}).catch(err => {
console.log(err)
})
})
contents.showDefinitionForSelection() macOS
ページで選択された単語を検索するポップアップ辞書を表示します。
contents.isOffscreen()
boolean を返します - *オフスクリーンレンダリング*が有効かどうかを示します。
contents.startPainting()
*オフスクリーンレンダリング*が有効で、描画していない場合は、描画を開始します。
contents.stopPainting()
*オフスクリーンレンダリング*が有効で、描画中の場合は、描画を停止します。
contents.isPainting()
boolean を返します - *オフスクリーンレンダリング*が有効な場合、現在描画中かどうかを返します。
contents.setFrameRate(fps)
fpsInteger
*オフスクリーンレンダリング*が有効な場合、フレームレートを指定された数値に設定します。1から240までの値のみが受け入れられます。
contents.getFrameRate()
Integer を返します - *オフスクリーンレンダリング*が有効な場合、現在のフレームレートを返します。
contents.invalidate()
このWebコンテンツがあるウィンドウの完全な再描画をスケジュールします。
*オフスクリーンレンダリング*が有効な場合、フレームを無効にし、'paint' イベントを介して新しいフレームを生成します。
contents.getWebRTCIPHandlingPolicy()
string を返します - WebRTC IP ハンドリングポリシーを返します。
contents.setWebRTCIPHandlingPolicy(policy)
policystring - WebRTC IP ハンドリングポリシーを指定します。default- ユーザーのパブリックIPおよびローカルIPを公開します。これがデフォルトの動作です。このポリシーを使用する場合、WebRTCはすべてのインターフェースを列挙し、それらをバインドしてパブリックインターフェースを検出する権利があります。default_public_interface_only- ユーザーのパブリックIPを公開しますが、ユーザーのローカルIPは公開しません。このポリシーを使用する場合、WebRTCはhttpで使用されるデフォルトルートのみを使用する必要があります。これにより、ローカルアドレスは公開されません。default_public_and_private_interfaces- ユーザーのパブリックIPとローカルIPを公開します。このポリシーを使用する場合、WebRTCはhttpで使用されるデフォルトルートのみを使用する必要があります。これにより、関連付けられたデフォルトのプライベートアドレスも公開されます。デフォルトルートは、マルチホームエンドポイントでOSによって選択されたルートです。disable_non_proxied_udp- パブリックIPもローカルIPも公開しません。このポリシーを使用する場合、プロキシサーバーがUDPをサポートしていない限り、WebRTCはTCPを使用してピアまたはサーバーに接続する必要があります。
WebRTC IP ハンドリングポリシーを設定すると、WebRTCを介して公開されるIPを制御できます。詳細については、BrowserLeaks を参照してください。
contents.getWebRTCUDPPortRange()
Object を返します
minInteger - WebRTCが使用する必要がある最小UDPポート番号。maxInteger - WebRTCが使用する必要がある最大UDPポート番号。
デフォルトでは、この値は { min: 0, max: 0 } であり、UDPポート範囲に制限を適用しません。
contents.setWebRTCUDPPortRange(udpPortRange)
udpPortRangeObjectminInteger - WebRTCが使用する必要がある最小UDPポート番号。maxInteger - WebRTCが使用する必要がある最大UDPポート番号。
WebRTC UDPポート範囲を設定すると、WebRTCで使用されるUDPポート範囲を制限できます。デフォルトでは、ポート範囲は制限されていません。注意: 無制限のポート範囲にリセットするには、この値を { min: 0, max: 0 } に設定する必要があります。
contents.getMediaSourceId(requestWebContents)
requestWebContentsWebContents - IDが登録されるWebコンテンツ。
string を返します - WebContents ストリームの識別子。この識別子は、tab の chromeMediaSource を使用して navigator.mediaDevices.getUserMedia で使用できます。識別子は、登録されている WebContents に制限され、10 秒間のみ有効です。
contents.getOSProcessId()
関連付けられたレンダラープロセスのオペレーティングシステム pid を表す Integer を返します。
contents.getProcessId()
関連付けられたレンダラーの Chromium 内部 pid を表す Integer を返します。フレーム固有のナビゲーションイベント(例:did-frame-navigate)で渡される frameProcessId と比較できます。
contents.takeHeapSnapshot(filePath)
filePathstring - 出力ファイルのパス。
Promise<void> を返します - スナップショットが正常に作成されたかどうかを示します。
V8ヒープスナップショットを取得し、filePath に保存します。
contents.getBackgroundThrottling()
boolean を返します - この WebContents がページがバックグラウンドになったときにアニメーションとタイマーをスロットリングするかどうか。これは Page Visibility API にも影響します。
contents.setBackgroundThrottling(allowed)
履歴
allowedboolean
ページがバックグラウンドになったときに、この WebContents がアニメーションとタイマーをスロットリングするかどうかを制御します。これは Page Visibility API にも影響します。
contents.getType()
string を返します - webContent のタイプ。 backgroundPage、window、browserView、remote、webview、または offscreen のいずれかになります。
contents.setImageAnimationPolicy(policy)
policystring -animate、animateOnce、またはnoAnimationのいずれか。
この WebContents の画像アニメーションポリシーを設定します。このポリシーは、*新しい* 画像にのみ影響し、現在アニメーション中の既存の画像には影響しません。これは Chromium の既知の制限事項であり、img.src = img.src で画像アニメーションを再計算させることができます。これにより、ネットワークトラフィックは発生しませんが、アニメーションポリシーが更新されます。
これは、Chromium の animationPolicy アクセシビリティ機能に対応します。
インスタンスプロパティ
contents.ipc 読み取り専用
この WebContents から送信された IPC メッセージに限定された IpcMain。
ipcRenderer.send、ipcRenderer.sendSync、または ipcRenderer.postMessage で送信された IPC メッセージは、次の順序で配信されます。
contents.on('ipc-message')contents.mainFrame.on(channel)contents.ipc.on(channel)ipcMain.on(channel)
invoke で登録されたハンドラーは、次の順序でチェックされます。最初に定義されたものが呼び出され、残りは無視されます。
contents.mainFrame.handle(channel)contents.handle(channel)ipcMain.handle(channel)
WebContents に登録されたハンドラーまたはイベントリスナーは、子フレームを含む、任意のフレームから送信された IPC メッセージを受信します。ほとんどの場合、メインフレームのみが IPC メッセージを送信できます。ただし、nodeIntegrationInSubFrames オプションが有効になっている場合は、子フレームも IPC メッセージを送信できます。その場合、ハンドラーは IPC イベントの senderFrame プロパティをチェックして、メッセージが予期されたフレームから来ていることを確認する必要があります。あるいは、WebFrameMain.ipc インターフェースを使用して、適切なフレームに直接ハンドラーを登録します。
contents.audioMuted
このページがミュートされているかどうかを決定する boolean プロパティ。
contents.userAgent
この Web ページのユーザーエージェントを決定する string プロパティ。
contents.zoomLevel
この WebContents のズームレベルを決定する number プロパティ。
元のサイズは 0 で、それを上下する各増分は、それぞれ元のサイズの 300% および 50% のデフォルト制限まで、20% 拡大または縮小することを表します。この式は scale := 1.2 ^ level です。
contents.zoomFactor
この WebContents のズームファクターを決定する number プロパティ。
ズームファクターは、ズームパーセントを 100 で割ったものなので、300% = 3.0 です。
contents.frameRate
WebContents のフレームレートを指定された数値に設定する Integer プロパティ。1 から 240 までの値のみが受け入れられます。
オフスクリーンレンダリングが有効な場合にのみ適用されます。
contents.id 読み取り専用
この WebContents の一意の ID を表す Integer。各 ID は、Electron アプリケーション全体のすべての WebContents インスタンス間で一意です。
contents.session 読み取り専用
この WebContents で使用される Session。
contents.navigationHistory 読み取り専用
この WebContents で使用される NavigationHistory。
contents.hostWebContents 読み取り専用
この WebContents を所有している可能性のある WebContents インスタンス。
contents.devToolsWebContents 読み取り専用
特定の WebContents に関連付けられた DevTools WebContents を表す WebContents | null プロパティ。
注:DevTools が閉じられると null になる可能性があるため、ユーザーはこのオブジェクトを保存しないでください。
contents.debugger 読み取り専用
この WebContents の Debugger インスタンス。
contents.backgroundThrottling
履歴
この WebContents がページがバックグラウンドになったときにアニメーションとタイマーをスロットリングするかどうかを決定する boolean プロパティ。これは Page Visibility API にも影響します。
contents.mainFrame 読み取り専用
ページのフレーム階層の最上位フレームを表す WebFrameMain プロパティ。
contents.opener 読み取り専用
この WebContents を開いたフレーム(open() を使用するか、target 属性を持つリンクをナビゲートすることにより)を表す WebFrameMain プロパティ。