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-navigation
will-frame-navigate
will-navigate
(メインフレームがナビゲートする場合のみ発行)will-redirect
(ナビゲーション中にリダイレクトが発生した場合のみ発行)did-redirect-navigation
(ナビゲーション中にリダイレクトが発生した場合のみ発行)did-frame-navigate
did-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)
frame
WebFrameMain
WebContents | undefined
を返します - 指定された WebFrameMain を持つ WebContents インスタンス。または、指定された WebFrameMain に関連付けられた WebContents がない場合は undefined
を返します。
webContents.fromDevToolsTargetId(targetId)
targetId
string - 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
イベントbounds
Rectangle - 要求された新しいコンテンツの境界
ページが window.moveTo
、window.resizeTo
、または関連する API を呼び出したときに発行されます。
デフォルトでは、これによりウィンドウが移動します。この動作を防ぐには、event.preventDefault()
を呼び出します。
イベント: 'did-create-window'
返り値
window
BrowserWindowdetails
オブジェクトurl
string - 作成されたウィンドウの URL。frameName
string -window.open()
の呼び出しで作成されたウィンドウに与えられた名前です。referrer
Referrer - 新しいウィンドウに渡されるリファラーです。リファラーポリシーによっては、Referer
ヘッダーが送信される場合と送信されない場合があります。postBody
PostBody (オプション) - 新しいウィンドウに送信されるポストデータと、設定される適切なヘッダーです。ポストデータを送信しない場合は、値はnull
になります。ウィンドウがtarget=_blank
を設定したフォームによって作成されている場合にのみ定義されます。disposition
string -default
、foreground-tab
、background-tab
、new-window
、またはother
を指定できます。
レンダラーで window.open
を介してウィンドウが正常に作成された後に発行されます。webContents.setWindowOpenHandler
からウィンドウの作成がキャンセルされた場合は発行されません。
詳細および webContents.setWindowOpenHandler
と組み合わせて使用する方法については、window.open()
を参照してください。
イベント: 'will-navigate'
返り値
details
Event<>url
string - フレームが移動しようとしている URL です。isSameDocument
boolean - このイベントは、window.history API を使用した同じドキュメント内の移動や、参照フラグメントの移動では発生しません。このプロパティは、このイベントでは常にfalse
に設定されます。isMainFrame
boolean - ナビゲーションがメインフレームで発生している場合は true です。frame
WebFrameMain - ナビゲートされるフレームです。initiator
WebFrameMain (オプション) - ナビゲーションを開始したフレームです。親フレーム (フレームの名前付きのwindow.open
を介したなど) の場合もあれば、フレームによって開始されなかった場合は null の場合もあります。開始フレームがイベントが発行される前に削除された場合も null になる可能性があります。
url
string 非推奨isInPlace
boolean 非推奨isMainFrame
boolean 非推奨frameProcessId
Integer 非推奨frameRoutingId
Integer 非推奨
ユーザーまたはページがメインフレームでナビゲーションを開始しようとしたときに発行されます。window.location
オブジェクトが変更されたり、ユーザーがページ内のリンクをクリックした場合などに発生します。
このイベントは、webContents.loadURL
や webContents.back
などの API を使用してプログラムでナビゲーションが開始された場合には発行されません。
また、アンカーリンクをクリックしたり、window.location.hash
を更新したりするなどのページ内ナビゲーションでも発行されません。この目的には did-navigate-in-page
イベントを使用してください。
event.preventDefault()
を呼び出すと、ナビゲーションが阻止されます。
イベント: 'will-frame-navigate'
返り値
details
Event<>url
string - フレームが移動しようとしている URL です。isSameDocument
boolean - このイベントは、window.history API を使用した同じドキュメント内の移動や、参照フラグメントの移動では発生しません。このプロパティは、このイベントでは常にfalse
に設定されます。isMainFrame
boolean - ナビゲーションがメインフレームで発生している場合は true です。frame
WebFrameMain - ナビゲートされるフレームです。initiator
WebFrameMain (オプション) - ナビゲーションを開始したフレームです。親フレーム (フレームの名前付きの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'
返り値
details
Event<>url
string - フレームが移動しようとしている URL です。isSameDocument
boolean - ドキュメントを変更せずにナビゲーションが発生したかどうか。同じドキュメント内のナビゲーションの例としては、参照フラグメントナビゲーション、pushState/replaceState、および同じページ履歴ナビゲーションがあります。isMainFrame
boolean - ナビゲーションがメインフレームで発生している場合は true です。frame
WebFrameMain - ナビゲートされるフレームです。initiator
WebFrameMain (オプション) - ナビゲーションを開始したフレームです。親フレーム (フレームの名前付きのwindow.open
を介したなど) の場合もあれば、フレームによって開始されなかった場合は null の場合もあります。開始フレームがイベントが発行される前に削除された場合も null になる可能性があります。
url
string 非推奨isInPlace
boolean 非推奨isMainFrame
boolean 非推奨frameProcessId
Integer 非推奨frameRoutingId
Integer 非推奨
任意のフレーム (メインフレームを含む) がナビゲーションを開始したときに発行されます。
イベント: 'will-redirect'
返り値
details
Event<>url
string - フレームが移動しようとしている URL です。isSameDocument
boolean - ドキュメントを変更せずにナビゲーションが発生したかどうか。同じドキュメント内のナビゲーションの例としては、参照フラグメントナビゲーション、pushState/replaceState、および同じページ履歴ナビゲーションがあります。isMainFrame
boolean - ナビゲーションがメインフレームで発生している場合は true です。frame
WebFrameMain - ナビゲートされるフレームです。initiator
WebFrameMain (オプション) - ナビゲーションを開始したフレームです。親フレーム (フレームの名前付きのwindow.open
を介したなど) の場合もあれば、フレームによって開始されなかった場合は null の場合もあります。開始フレームがイベントが発行される前に削除された場合も null になる可能性があります。
url
string 非推奨isInPlace
boolean 非推奨isMainFrame
boolean 非推奨frameProcessId
Integer 非推奨frameRoutingId
Integer 非推奨
ナビゲーション中にサーバー側のリダイレクトが発生したときに発行されます。たとえば、302 リダイレクトなどです。
このイベントは、did-start-navigation
の後、および同じナビゲーションの did-redirect-navigation
イベントの前に常に発行されます。
event.preventDefault()
を呼び出すと、ナビゲーション (リダイレクトだけでなく) が阻止されます。
イベント: 'did-redirect-navigation'
返り値
details
Event<>url
string - フレームが移動しようとしている URL です。isSameDocument
boolean - ドキュメントを変更せずにナビゲーションが発生したかどうか。同じドキュメント内のナビゲーションの例としては、参照フラグメントナビゲーション、pushState/replaceState、および同じページ履歴ナビゲーションがあります。isMainFrame
boolean - ナビゲーションがメインフレームで発生している場合は true です。frame
WebFrameMain - ナビゲートされるフレームです。initiator
WebFrameMain (オプション) - ナビゲーションを開始したフレームです。親フレーム (フレームの名前付きのwindow.open
を介したなど) の場合もあれば、フレームによって開始されなかった場合は null の場合もあります。開始フレームがイベントが発行される前に削除された場合も null になる可能性があります。
url
string 非推奨isInPlace
boolean 非推奨isMainFrame
boolean 非推奨frameProcessId
Integer 非推奨frameRoutingId
Integer 非推奨
ナビゲーション中にサーバー側のリダイレクトが発生した後に発行されます。たとえば、302 リダイレクトなどです。
このイベントは阻止できません。リダイレクトを阻止したい場合は、上記の will-redirect
イベントを確認する必要があります。
イベント: 'did-navigate'
返り値
event
イベントurl
stringhttpResponseCode
Integer - HTTP ナビゲーション以外の場合は -1httpStatusText
string - HTTP ナビゲーション以外の場合は空
メインフレームのナビゲーションが完了したときに発行されます。
このイベントは、アンカーリンクをクリックしたり、window.location.hash
を更新したりするなどのページ内ナビゲーションでは発行されません。この目的には did-navigate-in-page
イベントを使用してください。
イベント: 'did-frame-navigate'
返り値
event
イベントurl
stringhttpResponseCode
Integer - HTTP ナビゲーション以外の場合は -1httpStatusText
string - HTTP ナビゲーション以外の場合は空、isMainFrame
真偽値frameProcessId
整数frameRoutingId
整数
任意のフレームのナビゲーションが完了したときに発行されます。
このイベントは、アンカーリンクをクリックしたり、window.location.hash
を更新したりするなどのページ内ナビゲーションでは発行されません。この目的には did-navigate-in-page
イベントを使用してください。
イベント: 'did-navigate-in-page'
返り値
event
イベントurl
stringisMainFrame
真偽値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
イベントdetails
RenderProcessGoneDetails
レンダラープロセスが予期せず消えたときに発行されます。これは通常、クラッシュまたは強制終了されたためです。
イベント: 'unresponsive'
Web ページが応答しなくなったときに発行されます。
イベント: 'responsive'
応答しなくなった Web ページが再び応答するようになったときに発行されます。
イベント: 'plugin-crashed'
返り値
event
イベントname
stringversion
string
プラグインプロセスがクラッシュしたときに発行されます。
イベント: 'destroyed'
webContents
が破棄されたときに発行されます。
イベント: 'input-event'
返り値
event
イベントinputEvent
InputEvent
入力イベントが WebContents に送信されたときに発行されます。詳細については、InputEvent を参照してください。
イベント: 'before-input-event'
返り値
event
イベントinput
Object - 入力プロパティ。type
string -keyUp
またはkeyDown
のいずれか。key
string - KeyboardEvent.key と同等。code
string - KeyboardEvent.code と同等。isAutoRepeat
boolean - KeyboardEvent.repeat と同等。isComposing
boolean - KeyboardEvent.isComposing と同等。shift
boolean - KeyboardEvent.shiftKey と同等。control
boolean - KeyboardEvent.controlKey と同等。alt
boolean - KeyboardEvent.altKey と同等。meta
boolean - KeyboardEvent.metaKey と同等。location
number - KeyboardEvent.location と同等。modifiers
string[] - 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
イベントzoomDirection
string -in
またはout
を指定できます。
ユーザーがマウスホイールを使用してズームレベルの変更を要求したときに発行されます。
イベント: 'blur'
WebContents
がフォーカスを失ったときに発行されます。
イベント: 'focus'
WebContents
がフォーカスを取得したときに発行されます。
macOS では、フォーカスがあるということは、WebContents
がウィンドウのファーストレスポンダーであることを意味します。そのため、ウィンドウ間でフォーカスを切り替えても、各ウィンドウのファーストレスポンダーは変更されないため、WebContents
の focus
および blur
イベントはトリガーされません。
WebContents
の focus
および blur
イベントは、同じウィンドウ内の異なる WebContents
と BrowserView
の間のフォーカス変更を検出する場合にのみ使用する必要があります。
イベント: 'devtools-open-url'
返り値
event
イベントurl
string - クリックまたは選択されたリンクのURL。
DevToolsでリンクがクリックされたとき、またはそのコンテキストメニューでリンクに対して「新しいタブで開く」が選択されたときに発生します。
イベント: 'devtools-search-query'
返り値
event
イベントquery
string - 検索するテキスト。
コンテキストメニューでテキストに対して「検索」が選択されたときに発生します。
イベント: 'devtools-opened'
DevToolsが開かれたときに発生します。
イベント: 'devtools-closed'
DevToolsが閉じられたときに発生します。
イベント: 'devtools-focused'
DevToolsがフォーカスされた/開かれたときに発生します。
イベント: 'certificate-error'
返り値
event
イベントurl
stringerror
string - エラーコード。certificate
Certificatecallback
FunctionisTrusted
boolean - 証明書が信頼できると見なせるかどうかを示します。
isMainFrame
真偽値
url
のcertificate
の検証に失敗したときに発生します。
使い方は、app
の certificate-error
イベントと同じです。
イベント: 'select-client-certificate'
返り値
event
イベントurl
URLcertificateList
Certificate[]callback
Functioncertificate
Certificate - 指定されたリストの証明書である必要があります。
クライアント証明書が要求されたときに発生します。
使い方は、app
の select-client-certificate
イベントと同じです。
イベント: 'login'
返り値
event
イベントauthenticationResponseDetails
オブジェクトurl
URL
authInfo
オブジェクトisProxy
booleanscheme
stringhost
stringport
Integerrealm
string
callback
Functionusername
string (オプション)password
string (オプション)
webContents
がベーシック認証を行いたいときに発生します。
使い方は、app
の login
イベントと同じです。
イベント: 'found-in-page'
返り値
event
イベントresult
オブジェクトrequestId
IntegeractiveMatchOrdinal
Integer - アクティブなマッチの位置。matches
Integer - マッチの数。selectionArea
Rectangle - 最初のマッチ領域の座標。finalUpdate
boolean
webContents.findInPage
リクエストの結果が利用可能になったときに発生します。
イベント: 'media-started-playing'
メディアの再生が開始されたときに発生します。
イベント: 'media-paused'
メディアが一時停止または再生を完了したときに発生します。
イベント: 'audio-state-changed'
返り値
event
Event<>audible
boolean - 1つ以上のフレームまたは子webContents
がオーディオを出力している場合はtrue。
メディアが可聴または不可聴になったときに発生します。
イベント: 'did-change-theme-color'
返り値
event
イベントcolor
(string | null) - テーマカラーは '#rrggbb' の形式です。テーマカラーが設定されていない場合はnull
です。
ページのテーマカラーが変更されたときに発生します。これは通常、metaタグに出会ったためです。
<meta name='theme-color' content='#ff0000'>
イベント: 'update-target-url'
返り値
event
イベントurl
string
マウスがリンク上に移動したとき、またはキーボードがリンクにフォーカスを移動したときに発生します。
イベント: 'cursor-changed'
返り値
event
イベントtype
stringimage
NativeImage (オプション)scale
Float (オプション) - カスタムカーソルのスケーリングファクター。size
Size (オプション) -image
のサイズ。hotspot
Point (オプション) - カスタムカーソルのホットスポットの座標。
カーソルのタイプが変更されたときに発生します。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
オブジェクトx
Integer - x 座標。y
Integer - y 座標。frame
WebFrameMain - コンテキストメニューが呼び出されたフレーム。linkURL
string - コンテキストメニューが呼び出されたノードを囲むリンクのURL。linkText
string - リンクに関連付けられたテキスト。リンクの内容が画像の場合は空の文字列になる可能性があります。pageURL
string - コンテキストメニューが呼び出された最上位ページのURL。frameURL
string - コンテキストメニューが呼び出されたサブフレームのURL。srcURL
string - コンテキストメニューが呼び出された要素のソースURL。ソースURLを持つ要素は、画像、オーディオ、ビデオです。mediaType
string - コンテキストメニューが呼び出されたノードのタイプ。none
、image
、audio
、video
、canvas
、file
、またはplugin
になります。hasImageContents
boolean - コンテキストメニューが呼び出された画像に空でない内容があるかどうか。isEditable
boolean - コンテキストが編集可能かどうか。selectionText
string - コンテキストメニューが呼び出された選択範囲のテキスト。titleText
string - コンテキストメニューが呼び出された選択範囲のタイトルテキスト。altText
string - コンテキストメニューが呼び出された選択範囲のaltテキスト。suggestedFilename
string - コンテキストメニューの「名前を付けてリンク先を保存」オプションを使用してファイルを保存するときに使用する推奨ファイル名。selectionRect
Rectangle - 選択範囲のドキュメント空間内の座標を表す矩形。selectionStartOffset
number - 選択テキストの開始位置。referrerPolicy
Referrer - メニューが呼び出されたフレームのリファラーポリシー。misspelledWord
string - カーソルの下にあるスペルミスの単語(存在する場合)。dictionarySuggestions
string[] -misspelledWord
を置き換えるためにユーザーに表示する推奨単語の配列。スペルミスした単語があり、スペルチェッカーが有効になっている場合にのみ使用できます。frameCharset
string - メニューが呼び出されたフレームの文字エンコーディング。formControlType
string - コンテキストメニューが呼び出されたソース。可能な値は、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
boolean - コンテキストが編集可能である場合、スペルチェックが有効になっているかどうか。menuSourceType
string - コンテキストメニューを呼び出した入力ソース。none
、mouse
、keyboard
、touch
、touchMenu
、longPress
、longTap
、touchHandle
、stylus
、adjustSelection
、またはadjustSelectionReset
になります。mediaFlags
オブジェクト - コンテキストメニューが呼び出されたメディア要素のフラグ。inError
boolean - メディア要素がクラッシュしたかどうか。isPaused
boolean - メディア要素が一時停止されているかどうか。isMuted
boolean - メディア要素がミュートされているかどうか。hasAudio
boolean - メディア要素にオーディオがあるかどうか。isLooping
boolean - メディア要素がループしているかどうか。isControlsVisible
boolean - メディア要素のコントロールが表示されているかどうか。canToggleControls
boolean - メディア要素のコントロールが切り替え可能かどうか。canPrint
boolean - メディア要素を印刷できるかどうか。canSave
boolean - メディア要素をダウンロードできるかどうか。canShowPictureInPicture
boolean - メディア要素でピクチャーインピクチャーを表示できるかどうか。isShowingPictureInPicture
boolean - メディア要素が現在ピクチャーインピクチャーを表示しているかどうか。canRotate
boolean - メディア要素を回転できるかどうか。canLoop
boolean - メディア要素をループできるかどうか。
editFlags
オブジェクト - これらのフラグは、レンダラーが対応するアクションを実行できると信じているかどうかを示します。canUndo
boolean - レンダラーが元に戻せると信じているかどうか。canRedo
boolean - レンダラーがやり直せると信じているかどうか。canCut
boolean - レンダラーが切り取りできると信じているかどうか。canCopy
boolean - レンダラーがコピーできると信じているかどうか。canPaste
boolean - レンダラーが貼り付けできると信じているかどうか。canDelete
boolean - レンダラーが削除できると信じているかどうか。canSelectAll
boolean - レンダラーがすべて選択できると信じているかどうか。canEditRichly
boolean - レンダラーがテキストをリッチ編集できると信じているかどうか。
処理する必要がある新しいコンテキストメニューがある場合に発生します。
イベント: 'select-bluetooth-device'
返り値
event
イベントdevices
BluetoothDevice[]callback
FunctiondeviceId
string
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
イベントdirtyRect
Rectangleimage
NativeImage - フレーム全体の画像データ。
新しいフレームが生成されたときに発生します。バッファにはダーティ領域のみが渡されます。
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
イベントwebPreferences
WebPreferences - ゲストページで使用されるWeb設定。このオブジェクトは、ゲストページの設定を調整するために変更できます。params
Record<string, string> -src
URLなど、その他の<webview>
パラメータ。このオブジェクトは、ゲストページのパラメータを調整するために変更できます。
<webview>
のWebコンテンツがこのWebコンテンツにアタッチされるときに発生します。event.preventDefault()
を呼び出すと、ゲストページが破棄されます。
このイベントを使用して、<webview>
の webContents
の webPreferences
をロード前に構成できます。また、<webview>
属性を使用して設定できない設定を設定する機能を提供します。
イベント: 'did-attach-webview'
返り値
event
イベントwebContents
WebContents -<webview>
で使用されるゲストWebコンテンツ。
<webview>
がこのWebコンテンツにアタッチされたときに発生します。
イベント: 'console-message'
返り値
event
イベントlevel
Integer - ログレベル。0〜3。順番にverbose
、info
、warning
、error
に対応します。message
string - 実際のコンソールメッセージline
Integer - このコンソールメッセージをトリガーしたソースの行番号sourceId
string
関連付けられたウィンドウがコンソールメッセージをログに記録するときに発生します。
イベント: 'preload-error'
返り値
event
イベントpreloadPath
stringerror
Error
プリロードスクリプト preloadPath
が未処理の例外 error
をスローしたときに発生します。
イベント: 'ipc-message'
返り値
event
IpcMainEventchannel
string...args
any[]
レンダラープロセスが ipcRenderer.send()
を介して非同期メッセージを送信したときに発生します。
このWebContentsから特定のIPCメッセージに応答するための IpcMain
のようなインターフェイスを提供するwebContents.ipc
も参照してください。
イベント: 'ipc-message-sync'
返り値
event
IpcMainEventchannel
string...args
any[]
レンダラープロセスが ipcRenderer.sendSync()
を介して同期メッセージを送信したときに発生します。
このWebContentsから特定のIPCメッセージに応答するための IpcMain
のようなインターフェイスを提供するwebContents.ipc
も参照してください。
イベント: 'preferred-size-changed'
返り値
event
イベントpreferredSize
Size - スクロールを必要とせずに、ドキュメントのレイアウトを含めるために必要な最小サイズ。
WebContents
の推奨サイズが変更されたときに発生します。
このイベントは、webPreferences
で enablePreferredSizeMode
が true
に設定されている場合にのみ発生します。
イベント: 'frame-created'
返り値
event
イベントdetails
オブジェクトframe
WebFrameMain
ページ内で mainFrame、<iframe>
、またはネストされた <iframe>
がロードされたときに発生します。
インスタンスメソッド
contents.loadURL(url[, options])
url
string
戻り値 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])
filePath
string
戻り値 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])
url
string
ナビゲーションせずに、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
オブジェクト(オプション)waitForBeforeUnload
boolean - 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
文字列userGesture
boolean(オプション) - デフォルトは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
機能で使用されるワールドです。ここに任意の整数を指定できます。scripts
WebSource[]userGesture
boolean(オプション) - デフォルトはfalse
です。
Promise<any>
を返します - 実行されたコードの結果で解決されるPromise。または、コードの結果が拒否されたPromiseの場合は拒否されます。
executeJavaScript
と同様に機能しますが、分離されたコンテキストでscripts
を評価します。
contents.setIgnoreMenuShortcuts(ignore)
ignore
boolean
このウェブコンテンツにフォーカスがある間、アプリケーションメニューのショートカットを無視します。
contents.setWindowOpenHandler(handler)
-
handler
Function<WindowOpenHandlerResponse>details
オブジェクトurl
文字列 -window.open()
に渡されるURLの解決済みバージョン。例:window.open('foo')
でウィンドウを開くと、https://the-origin/the/current/path/foo
のようなものが生成されます。frameName
文字列 -window.open()
で提供されるウィンドウの名前features
文字列 -window.open()
に提供されるウィンドウ機能のコンマ区切りリスト。disposition
string -default
、foreground-tab
、background-tab
、new-window
、またはother
を指定できます。referrer
Referrer - 新しいウィンドウに渡されるリファラーです。リファラーポリシーによっては、Referer
ヘッダーが送信される場合と送信されない場合があります。postBody
PostBody (オプション) - 新しいウィンドウに送信されるポストデータと、設定される適切なヘッダーです。ポストデータを送信しない場合は、値は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)
muted
boolean
現在のウェブページのオーディオをミュートします。
contents.isAudioMuted()
boolean
を返します - このページがミュートされているかどうか。
contents.isCurrentlyAudible()
boolean
を返します - オーディオが現在再生されているかどうか。
contents.setZoomFactor(factor)
factor
Double - ズームファクター。デフォルトは1.0です。
ズームファクターを指定されたファクターに変更します。ズームファクターはズームパーセントを100で割ったものなので、300% = 3.0です。
ファクターは0.0より大きくなければなりません。
contents.getZoomFactor()
number
を返します - 現在のズームファクター。
contents.setZoomLevel(level)
level
number - ズームレベル。
ズームレベルを指定されたレベルに変更します。元のサイズは0で、それより上または下の増分は、それぞれ元のサイズの300%および50%のデフォルト制限まで、20%大きくまたは小さくズームすることを表します。この計算式はscale := 1.2 ^ level
です。
注意: Chromiumレベルでのズームポリシーは同一オリジンであり、特定のドメインのズームレベルは、同じドメインを持つすべてのウィンドウインスタンスに伝播します。ウィンドウのURLを区別することで、ウィンドウごとにズームを機能させることができます。
contents.getZoomLevel()
number
を返します - 現在のズームレベル。
contents.setVisualZoomLevelLimits(minimumLevel, maximumLevel)
minimumLevel
numbermaximumLevel
number
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)
x
Integery
Integer
指定された位置にある画像をクリップボードにコピーします。
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)
text
string
Webページで編集コマンドreplace
を実行します。
contents.replaceMisspelling(text)
text
string
Webページで編集コマンドreplaceMisspelling
を実行します。
contents.insertText(text)
text
string
Promise<void>
を返します
フォーカスされた要素にtext
を挿入します。
contents.findInPage(text[, options])
text
string - 検索するコンテンツ。空であってはなりません。
Integer
を返します - リクエストに使用されるリクエストID。
Webページ内のtext
に一致するすべてを検索するリクエストを開始します。リクエストの結果は、found-in-page
イベントをサブスクライブすることで取得できます。
contents.stopFindInPage(action)
action
string -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])
rect
Rectangle (optional) - キャプチャするページの領域。opts
オブジェクト(オプション)stayHidden
boolean (optional) - ページを可視化せずに非表示のままにします。デフォルトはfalse
です。stayAwake
boolean (optional) - システムをスリープさせずに、システムを起動状態に保ちます。デフォルトはfalse
です。
Promise<NativeImage>
を返します - NativeImageで解決されます
rect
内のページのsnapshotをキャプチャします。rect
を省略すると、表示されているページ全体がキャプチャされます。ページは、ブラウザウィンドウが非表示で、キャプチャカウントがゼロでない場合に表示されると見なされます。ページを非表示のままにする場合は、stayHidden
をtrueに設定する必要があります。
contents.isBeingCaptured()
boolean
を返します - このページがキャプチャされているかどうか。キャプチャカウントが0より大きい場合にtrueを返します。
contents.getPrintersAsync()
システムプリンターリストを取得します。
Promise<PrinterInfo[]>
を返します - PrinterInfo[]で解決されます
contents.print([options], [callback])
callback
Function (オプション)success
boolean - 印刷呼び出しが成功したかどうかを示します。failureReason
string - 印刷に失敗した場合にコールバックされるエラーの説明。
カスタムの 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)
path
string
指定されたパスを DevTools ワークスペースに追加します。DevTools の作成後に使用する必要があります。
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.webContents.on('devtools-opened', () => {
win.webContents.addWorkSpace(__dirname)
})
contents.removeWorkSpace(path)
path
string
指定されたパスを DevTools ワークスペースから削除します。
contents.setDevToolsWebContents(devToolsWebContents)
devToolsWebContents
WebContents
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)
x
Integery
Integer
位置 (x
, y
) の要素の検査を開始します。
contents.inspectSharedWorker()
共有ワーカーコンテキストの開発者ツールを開きます。
contents.inspectSharedWorkerById(workerId)
workerId
string
ID に基づいて共有ワーカーを検査します。
contents.getAllSharedWorkers()
Returns SharedWorkerInfo[] - すべての共有ワーカーに関する情報。
contents.inspectServiceWorker()
サービスワーカーコンテキストの開発者ツールを開きます。
contents.send(channel, ...args)
channel
string...args
any[]
引数とともに channel
を介して、レンダラープロセスに非同期メッセージを送信します。引数は、構造化クローンアルゴリズムと、postMessage
と同様にシリアライズされるため、プロトタイプチェーンは含まれません。関数、Promise、Symbol、WeakMap、または WeakSet を送信すると、例外がスローされます。
DOM オブジェクトや特別な Electron オブジェクトなど、非標準の JavaScript 型を送信すると、例外がスローされます。
詳細については、Electron の IPC ガイドを参照してください。
contents.sendToFrame(frameId, channel, ...args)
frameId
Integer | [number, number] - 送信するフレームの ID。または、フレームがメインフレームとは異なるプロセスにある場合は、[processId, frameId]
のペア。channel
string...args
any[]
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])
channel
stringmessage
anytransfer
MessagePortMain[] (オプション)
オプションで、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)
parameters
ObjectscreenPosition
string - エミュレートする画面タイプを指定します(デフォルト:desktop
)。desktop
- デスクトップ画面タイプ。mobile
- モバイル画面タイプ。
screenSize
Size - エミュレートされた画面サイズを設定します(screenPosition == mobile)。viewPosition
Point - 画面上のビューの位置を設定します(screenPosition == mobile)(デフォルト:{ x: 0, y: 0 }
)。deviceScaleFactor
Integer - デバイススケールファクターを設定します(ゼロの場合は、元のデバイススケールファクターがデフォルトになります)(デフォルト:0
)。viewSize
Size - エミュレートされたビューサイズを設定します(空の場合はオーバーライドなし)。scale
Float - 利用可能なスペース内でのエミュレートされたビューのスケール(ビューモードに合わせない場合)(デフォルト:1
)。
指定されたパラメータでデバイスエミュレーションを有効にします。
contents.disableDeviceEmulation()
webContents.enableDeviceEmulation
で有効になっているデバイスエミュレーションを無効にします。
contents.sendInputEvent(inputEvent)
inputEvent
MouseInputEvent | MouseWheelInputEvent | KeyboardInputEvent
ページに入力event
を送信します。注意: sendInputEvent()
を機能させるには、コンテンツを含むBrowserWindow
がフォーカスされている必要があります。
contents.beginFrameSubscription([onlyDirty ,]callback)
onlyDirty
boolean (オプション) - デフォルトはfalse
。callback
Functionimage
NativeImagedirtyRect
Rectangle
プレゼンテーションイベントとキャプチャされたフレームのサブスクリプションを開始します。プレゼンテーションイベントが発生すると、callback
は callback(image, dirtyRect)
で呼び出されます。
image
は、キャプチャされたフレームを格納するNativeImageのインスタンスです。
dirtyRect
は、ページのどの部分が再描画されたかを記述する x, y, width, height
プロパティを持つオブジェクトです。onlyDirty
が true
に設定されている場合、image
には再描画された領域のみが含まれます。onlyDirty
のデフォルトは false
です。
contents.endFrameSubscription()
フレームプレゼンテーションイベントのサブスクリプションを終了します。
contents.startDrag(item)
item
Objectfile
string - ドラッグ中のファイルのパス。files
string[] (オプション) - ドラッグ中のファイルのパス。(files
はfile
フィールドを上書きします)icon
NativeImage | string - macOSでは、画像は空でない必要があります。
現在のドラッグアンドドロップ操作のドラッグアイテムとしてitem
を設定します。file
はドラッグするファイルの絶対パスであり、icon
はドラッグ時にカーソルの下に表示される画像です。
contents.savePage(fullPath, saveType)
fullPath
string - 絶対ファイルパス。saveType
string - 保存タイプを指定します。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)
fps
Integer
*オフスクリーンレンダリング*が有効な場合、フレームレートを指定された数値に設定します。1から240までの値のみが受け入れられます。
contents.getFrameRate()
Integer
を返します - *オフスクリーンレンダリング*が有効な場合、現在のフレームレートを返します。
contents.invalidate()
このWebコンテンツがあるウィンドウの完全な再描画をスケジュールします。
*オフスクリーンレンダリング*が有効な場合、フレームを無効にし、'paint'
イベントを介して新しいフレームを生成します。
contents.getWebRTCIPHandlingPolicy()
string
を返します - WebRTC IP ハンドリングポリシーを返します。
contents.setWebRTCIPHandlingPolicy(policy)
policy
string - 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
を返します
min
Integer - WebRTCが使用する必要がある最小UDPポート番号。max
Integer - WebRTCが使用する必要がある最大UDPポート番号。
デフォルトでは、この値は { min: 0, max: 0 }
であり、UDPポート範囲に制限を適用しません。
contents.setWebRTCUDPPortRange(udpPortRange)
udpPortRange
Objectmin
Integer - WebRTCが使用する必要がある最小UDPポート番号。max
Integer - WebRTCが使用する必要がある最大UDPポート番号。
WebRTC UDPポート範囲を設定すると、WebRTCで使用されるUDPポート範囲を制限できます。デフォルトでは、ポート範囲は制限されていません。注意: 無制限のポート範囲にリセットするには、この値を { min: 0, max: 0 }
に設定する必要があります。
contents.getMediaSourceId(requestWebContents)
requestWebContents
WebContents - 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)
filePath
string - 出力ファイルのパス。
Promise<void>
を返します - スナップショットが正常に作成されたかどうかを示します。
V8ヒープスナップショットを取得し、filePath
に保存します。
contents.getBackgroundThrottling()
boolean
を返します - この WebContents がページがバックグラウンドになったときにアニメーションとタイマーをスロットリングするかどうか。これは Page Visibility API にも影響します。
contents.setBackgroundThrottling(allowed)
履歴
allowed
boolean
ページがバックグラウンドになったときに、この WebContents がアニメーションとタイマーをスロットリングするかどうかを制御します。これは Page Visibility API にも影響します。
contents.getType()
string
を返します - webContent のタイプ。 backgroundPage
、window
、browserView
、remote
、webview
、または offscreen
のいずれかになります。
contents.setImageAnimationPolicy(policy)
policy
string -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
プロパティ。