webContents
ウェブページを描画、制御します。
プロセス: Main
webContents
は EventEmitter を継承しています。 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
のイベントは、mainFrame がナビゲーションしたときにのみ発生します。 <iframe>
でのナビゲーションも監視したい場合は、will-frame-navigate
イベントと did-frame-navigate
イベントを使用します。
メソッド
これらのメソッドは、webContents
モジュールからアクセスできます。
const { webContents } = require('electron')
console.log(webContents)
webContents.getAllWebContents()
戻り値 WebContents[]
- すべての WebContents
インスタンスの配列。 これには、すべてのウインドウ、開かれた開発者向けツール、開発者向 けツールのバックグラウンド拡張のページが含まれます。
webContents.getFocusedWebContents()
戻り値 WebContents | null
- このアプリケーション内でフォーカス中のウェブコンテンツ。無ければ null
。
webContents.fromId(id)
id
Integer
戻り値 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 デベロッパー ツールプロトコルの TargetID。
戻り値 WebContents | undefined
- 指定 TargetID の WebContents インスタンス。指定 TargetID に関連付けられた WebContents が存在しない場合は undefined
です。
Chrome デベロッパー ツールプロトコル と通信する際に、割り当てられた 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
EventerrorCode
IntegererrorDescription
stringvalidatedURL
stringisMainFrame
booleanframeProcessId
IntegerframeRoutingId
Integer
このイベントは did-finish-load
に似ていますが、ロードが失敗したときも発行されます。 エラーコードとその意味のすべてのリストは こちら です。
イベント: 'did-fail-provisional-load'
戻り値:
event
EventerrorCode
IntegererrorDescription
stringvalidatedURL
stringisMainFrame
booleanframeProcessId
IntegerframeRoutingId
Integer
このイベントは did-fail-load
に似ていますが、ロードがキャンセルされたときに発行されます (例えば window.stop()
が呼び出されたときなど)。
イベント: 'did-frame-finish-load'
戻り値:
event
EventisMainFrame
booleanframeProcessId
IntegerframeRoutingId
Integer
フレームのナビ ゲーションが終了したときに発行されます。
イベント: 'did-start-loading'
タブのくるくるが始まったタイミングに対応しています。
イベント: 'did-stop-loading'
タブのくるくるが止まったタイミングに対応しています。
イベント: 'dom-ready'
最上位フレームの document が読み込まれたときに発生します。
イベント: 'page-title-updated'
戻り値:
event
Eventtitle
stringexplicitSet
boolean
ナビゲーション中にページタイトルが設定されると発生します。 explicitSet
は、タイトルがファイル URL から合成されている場合に false になりま す。
イベント: 'page-favicon-updated'
戻り値:
event
Eventfavicons
string[] - URLの配列。
ページがファビコンの URL を受け取ると発行されます。
イベント: 'content-bounds-updated'
戻り値:
event
Eventbounds
Rectangle - 要求された新しいコンテンツ領域
ページが window.moveTo
、 window.resizeTo
、または関連する API を呼び出すときに発生します。
デフォルトでは、これによりウインドウを動かします。 その動作を阻害するには、event.preventDefault()
を呼び出してください。
イベント: 'did-create-window'
戻り値:
window
BrowserWindowdetails
Objecturl
string - 作成したウインドウの URL。frameName
string -window.open()
の呼び出しで作成したウインドウに指定した名前。referrer
Referrer - 新規ウインドウへ渡されるリファラ。 リファラのポリシーに応じたReferer
ヘッダーが送信されるとは限りません。postBody
PostBody (任意) - 新規ウインドウに送信される POST データと、それに伴って設定される適切なヘッダーです。 送信する POST データが無い場合、値は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 (任意) - ナビゲーションを開始したフレームです。ナビゲーションがフレームによって開始されていない場合は null になります。これは親フレームになることがあります (例えばwindow.open
でフレーム名を指定した場合)。 イベントの発生前に開始したフレームが削除された場合も 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 (任意) - ナビゲーションを開始したフレームです。ナビゲーションがフレームによって開始されていない場合は null になります。これは親フレームになることがあります (例えばwindow.open
でフレーム名を指定した場合)。 イベントの発生前に開始したフレームが削除された場合も 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 (任意) - ナビゲーションを開始したフレームです。ナビゲーションがフレームによって開始されていない場合は null になります。これは親フレームになることがあります (例えばwindow.open
でフレーム名を指定した場合)。 イベントの発生前に開始したフレームが削除された場合も 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 (任意) - ナビゲーションを開始したフレームです。ナビゲーションがフレームによって開始されていない場合は null になります。これは親フレームになることがあります (例えばwindow.open
でフレーム名を指定した場合)。 イベントの発生前に開始したフレームが削除された場合も 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 (任意) - ナビゲーションを開始したフレームです。ナビゲーションがフレームによって開始されていない場合は null になります。これは親フレームになることがあります (例えばwindow.open
でフレーム名を指定した場合)。 イベントの発生前に開始したフレームが削除された場合も null になることがあります。
url
string 非推奨isInPlace
boolean 非推奨isMainFrame
boolean 非推奨frameProcessId
Integer 非推奨frameRoutingId
Integer 非推奨
ナビゲーション後にサーバーサイドリダイレクトが発生すると発行されます。 302 リダイレクトなどがその例です。
このイベントを阻害することはできません。リダイレクトを防ぎたい場合は、上記の will-redirect
イベントを確認してください。
イベント: 'did-navigate'
戻り値:
event
Eventurl
stringhttpResponseCode
Integer - HTTP ナビゲーションが無い場合は-1httpStatusText
string - HTTP ナビゲーションが無い場合は空
メインフレームのナビゲーションが完了したときに発生します。
このイベントは、アンカーリンクのクリックや window.location.hash
の更新のような、ページ内ナビゲーションでは発行されません。 これを意図する場合は did-navigate-in-page
を使用して下さい。
イベント: 'did-frame-navigate'
戻り値:
event
Eventurl
stringhttpResponseCode
Integer - HTTP ナビゲーションが無い場合は-1httpStatusText
string - 非 HTTP ナビゲーションでは空です。isMainFrame
booleanframeProcessId
IntegerframeRoutingId
Integer
フレームのナビゲーションが完了したときに発生します。
このイベントは、アンカーリンクのクリックや window.location.hash
の更新のような、ページ内ナビゲーションでは発行されません。 これを意図する場合は did-navigate-in-page
を使用して下さい。
イベント: 'did-navigate-in-page'
戻り値:
event
Eventurl
stringisMainFrame
booleanframeProcessId
IntegerframeRoutingId
Integer
フレームのページ内ナビゲーションが発生したときに発生します。
ページ内ナビゲーションが行われるとき、ページのURLは変更されますがページ外でのナビゲーションは発生しません。 これが発生する例は、アンカーリンクがクリックされたときや、DOM の hashchange
イベントがトリガーされたときです。
イベント: 'will-prevent-unload'
戻り値:
event
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
Eventdetails
RenderProcessGoneDetails
renderer processが予期せず消えたときに発生します。 プロセスがクラッシュした場合やキルされた場合は正常です。
イベント: 'unresponsive'
Webページが応答しなくなるときに発生します。
イベント: 'responsive'
応答しないWebページが再び応答するようになるときに発生します。
イベント: 'plugin-crashed'
戻り値:
event
Eventname
stringversion
string
プラグインプロセスがクラッシュしたときに発行されます。
イベント: 'destroyed'
webContents
が破棄されたときに発生します。
イベント: 'input-event'
戻り値:
event
EventinputEvent
InputEvent
入力イベントが WebContents へ送信されたときに発生します。 詳しくは InputEvent をご参照ください。
イベント: 'before-input-event'
戻り値:
event
Eventinput
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) => {
// 例として、Ctrl/Cmd が押下されているときだけアプリケーションメニューの
// キーボードショートカットを有効にしてみます。
win.webContents.setIgnoreMenuShortcuts(!input.control && !input.meta)
})
イベント: 'enter-html-full-screen'
ウインドウがHTML APIによってフルスクリーン状態に入るときに発生します。
イベント: 'leave-html-full-screen'
ウインドウがHTML APIによってフルスクリーン状態を抜けるときに発生します。
イベント: 'zoom-changed'
戻り値:
event
EventzoomDirection
string -in
かout
にできます。
ユーザーがマウスホイールを使用してズームレベルの変更を要求しているときに生成されます。
イベント: 'blur'
WebContents
がフォーカスを失ったときに発生します。
イベント: 'focus'
WebContents
がフォーカスを得たときに発生します。
注意として macOS でフォーカスを得るというのは WebContents
がウインドウのファーストレスポンダ となることを意味するため、ウインドウ間でフォーカスを切り替えても各ウインドウのファーストレスポンダが変更されず WebContents
の blur
と focus
の イベントはトリガされません。
WebContents
の focus
と blur
イベントは、同じウインドウ内の異なる WebContents
と BrowserView
の間のフォーカス変化の検出に使用するとよいでしょう。
イベント: 'devtools-open-url'
戻り値:
event
Eventurl
string - クリックまたは選択されたリンクの URL。
DevTools 内でリンクがクリックされたとき、またはコンテキストメニューでリンクに対して「新規タブで開く」が選択されたときに発行されます。
イベント: 'devtools-search-query'
戻り値:
event
Eventquery
string - クエリするテキスト。
コンテキストメニューでテキストに対して「検索」が選択されたときに発生します。
イベント: 'devtools-opened'
開発者向けツールが開かれたときに発行されます。
イベント: 'devtools-closed'
開発者向けツールが閉じられたときに発行されます。
イベント: 'devtools-focused'
開発者向けツールがフォーカスされた / 開かれたときに発行されます。
イベント: 'certificate-error'
戻り値:
event
Eventurl
stringerror
string - エラーコード。certificate
Certificatecallback
FunctionisTrusted
boolean - 証明書が信頼できるとみなされるかどうかを示す。
isMainFrame
boolean
url
の certificate
の認証に失敗したときに発行されます。
使い方は、app
の certificate-error
イベント と同じです。
イベント: 'select-client-certificate'
戻り値:
event
Eventurl
URLcertificateList
Certificate[]callback
Functioncertificate
Certificate - 与えられたリストにある証明書でなければなりません。
クライアント証明書が要求されたときに発生します。
使い方は、app
の select-client-certificate
イベント と同じです。
イベント: 'login'
戻り値:
event
EventauthenticationResponseDetails
Objecturl
URL
authInfo
ObjectisProxy
booleanscheme
stringhost
stringport
Integerrealm
string
callback
Functionusername
string (任意)password
string (optional)
webContents
がBasic認証を要求すると発生します。
使い方は、app
の login
イベント と同じです。
イベント: 'found-in-page'
戻り値:
event
Eventresult
ObjectrequestId
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
Eventcolor
(string | null) - '#rrggbb' 形式のテーマカラー。 テーマカラーが設定されていないとnull
です。
ページのテーマカラーが変わったときに発生します。 これは通常、メタタグを発見すると起こります。
<meta name='theme-color' content='#ff0000'>
イベント: 'update-target-url'
戻り値:
event
Eventurl
string
マウスをリンクにマウスオーバーしたり、キーボードでリンクにフォーカスしたときに発行されます。
イベント: 'cursor-changed'
戻り値:
event
Eventtype
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
Eventparams
Objectx
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 - コンテキストメニューが呼び出されたときの選択範囲の代替テキスト。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
Object - コンテキストメニューが呼び出されたメディア要素のフラグ。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
Object - これらのフラグは、レンダラーが対応するアクションを実行できると信頼しているかどうかを示します。canUndo
boolean - レンダラーがアンドゥできると信頼しているかどうか。canRedo
boolean - レンダラーがリドゥできると信頼しているかどうか。canCut
boolean - レンダラーがカットできると信頼しているかどうか。canCopy
boolean - レンダラーがコピーできると信頼しているかどうか。canPaste
boolean - レンダラーがペーストできると信頼しているかどうか。canDelete
boolean - レンダラーが削除できると信頼しているかどうか。canSelectAll
boolean - レンダラーが全選択できると信頼しているかどうか。canEditRichly
boolean - レンダラーがテキストをリッチ編集できると信頼しているかどうか。
処理が必要な新しいコンテキストメニューがあるときに発行されます。
イベント: 'select-bluetooth-device'
戻り値:
event
Eventdevices
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) {
// デバイスが見つからなかったので、もう少し待つか (例えばデバイスの
// 電源が入るまで)、コールバックを空文字列で呼び出してリクエストを
// キャンセルする必要があります。
callback('')
} else {
callback(result.deviceId)
}
})
})
イベント: 'paint'
戻り値:
event
EventdirtyRect
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'
開発者向けツールウインドウが webContents にリロードを指示したときに発行されます。
イベント: 'will-attach-webview'
戻り値:
event
EventwebPreferences
WebPreferences - ゲストページで使用されるウェブ設定。 このオブジェクトを変更して、ゲストページの設定を調整できます。params
Record<string, string> - 他の<webview>
パラメーター。src
URL などがこれにあたります。 このオブジェクトを変更して、ゲストページのパラメーターを調整できます。
<webview>
の webContents がこの webContents に適用されようとしているときに発行されます。 event.preventDefault()
を呼ぶとゲストページを破棄します。
このイベントは、 webContents
の <webview>
が読み込まれる前に webPreferences
を設定するのに使用でき、<webview>
の属性を通して設定できない設定を、設定する機能を提供します。
イベント: 'did-attach-webview'
戻り値:
event
EventwebContents
WebContents -<webview>
で使われるゲスト WebContents。
<webview>
がこの webContents に適用されたときに発行されます。
Event: 'console-message'
戻り値:
event
Eventlevel
Integer - 0 から 3 のログレベル。 順にverbose
、info
、warning
、error
に対応します。message
string - 実際のコンソールメッセージline
Integer - このコンソールメッセージのトリガーとなったソースの行番号sourceId
string
関連付けられたウインドウがコンソールメッセージを出力すると発生します。
イベント: 'preload-error'
戻り値:
event
EventpreloadPath
stringerror
Error
プリロードスクリプト preloadPath
がハンドルされていない例外 error
を投げたときに発行されます。
イベント: 'ipc-message'
戻り値:
event
IpcMainEventchannel
string...args
any[]
レンダラープロセスが ipcRenderer.send()
を介して非同期メッセージを送信したときに発生します。
webContents.ipc
もご参照ください。これはその WebContents からの IPC メッセージに特別に応答するための IpcMain
ライクなインターフェイスを提供します。
イベント: 'ipc-message-sync'
戻り値:
event
IpcMainEventchannel
string...args
any[]
レンダラープロセスが ipcRenderer.sendSync()
を介して同期メッセージを送信したときに発生します。
webContents.ipc
もご参照ください。これはその WebContents からの IPC メッセージに特別に応答するための IpcMain
ライクなインターフェイスを提供します。
イベント: 'preferred-size-changed'
戻り値:
event
EventpreferredSize
Size - スクロールなしでドキュメントのレイアウトを格納するのに必要な最小サイズ。
WebContents
の優先サイズが変更された場合に発生します。
このイベントは、webPreferences
で enablePreferredSizeMode
が true
に設定されている場合にのみ発生します。
イベント: 'frame-created'
戻り値:
event
Eventdetails
Objectframe
WebFrameMain
mainFrame、<iframe>
、またはネストされた <iframe>
がページ内にロードされたときに発生します。
インスタンスメソッド
contents.loadURL(url[, options])
url
string
戻り値 Promise<void>
- ページの読み込みが完了した時 (did-finish-load
を参照) に解決され、ページの読み込みに失敗した時 (did-fail-load
を参照) に拒否される Promise。 無操作拒否ハンドラーが既にアタッチされているため、未処理の拒否エラーは回避されます。
ウインドウ内に 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
を参照) に解決され、ページの読み込みに失敗した時 (did-fail-load
を参照) に拒否される Promise。
指定されたファイルをウインドウにロードします。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
- 現在のウェブページの 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
- 現在のウェブページのタイトル。
contents.isDestroyed()
戻り値 boolean
- ウェブページが破棄されているかどうか。
contents.close([opts])
opts
Object (任意)waitForBeforeUnload
boolean - true であれば、ページを閉じる前にbeforeunload
イベントを発生させます。 ページのアンロードが阻害された場合、WebContents は閉じられません。will-prevent-unload
はページがアンロードを阻害するように要求したときに発生します。
ウェブコンテンツが window.close()
を呼ばれたときのように、ページを閉じます。
ページが正常に閉じられた場合 (すなわち、ページによってアンロードが妨げられなかった場合、または waitForBeforeUnload
が false や未指定の場合)、WebContents は破棄 され、使用できなくなります。 また destroyed
イベントが発生します。
contents.focus()
ウェブページにフォーカスします。
contents.isFocused()
戻り値 boolean
- ウェブページがフォーカスされているかどうか。
contents.isLoading()
戻り値 boolean
- ウェブページがまだリソースを読み込んでいるかどうか。
contents.isLoadingMainFrame()
戻り値 boolean
- メインフレーム (iframe やフレーム内のフレームだけではない) がまだ読み込んでいるかどうか。
contents.isWaitingForResponse()
戻り値 boolean
- ウェブページ が、ページのメインリソースからの最初の応答を待機しているかどうか。
contents.stop()
保留中のナビゲーションを停止します。
contents.reload()
現在のページを再読み込みします。
contents.reloadIgnoringCache()
現在のページを、キャッシュを無視して再読み込みします。
contents.canGoBack()
Deprecated
History
Version(s) | Changes |
---|---|
None | API DEPRECATED |
戻り値 boolean
- ブラウザが前のウェブページへ戻れるかどうか。
非推奨: 新しい contents.navigationHistory.canGoBack
API を使用するようにしてください。
contents.canGoForward()
Deprecated
History
Version(s) | Changes |
---|---|
None | API DEPRECATED |
戻り値 boolean
- ブラウザが次のウェブページへ進めるかどうか。
非推奨: 新しい contents.navigationHistory.canGoForward
API を使用するようにしてください。
contents.canGoToOffset(offset)
非推奨
History
Version(s) | Changes |
---|---|
None | API DEPRECATED |
offset
Integer
戻り値 boolean
- offset
番目のウェブページへ行けるかどうか。
非推奨: 新しい contents.navigationHistory.canGoToOffset
API を使用するようにしてください。
contents.clearHistory()
Deprecated
History
Version(s) | Changes |
---|---|
None | API DEPRECATED |
ナビゲーション履歴を消去します。
非推奨: 新しい contents.navigationHistory.clear
API を使用するようにしてください。
contents.goBack()
Deprecated
History
Version(s) | Changes |
---|---|
None | API DEPRECATED |
ブラウザを前のページへ戻させます。
非推奨: 新しい contents.navigationHistory.goBack
API を使用するようにしてください。
contents.goForward()
Deprecated
History
Version(s) | Changes |
---|---|
None | API DEPRECATED |
ブラウザを次のページへ進めさせます。
非推奨: 新しい contents.navigationHistory.goForward
API を使用するようにしてください。
contents.goToIndex(index)
Deprecated
History
Version(s) | Changes |
---|---|
None | API DEPRECATED |
index
Integer
ブラウザを指定した絶対ウェブページインデックスへナビゲーションします。
非推奨: 新しい contents.navigationHistory.goToIndex
API を使用するようにしてください。
contents.goToOffset(offset)
非推奨
History
Version(s) | Changes |
---|---|
None | API DEPRECATED |
offset
Integer
現在のエントリから指定したオフセットへナビゲーションします。
非推奨: 新しい contents.navigationHistory.goToOffset
API を使用するようにしてください。
contents.isCrashed()
戻り値 boolean
- レンダラープロセスがクラッシュしたかどうか。
contents.forcefullyCrashRenderer()
このwebContents
を現在ホスティングしているレンダラープロセスを強制終了します。 これにより、 reason=kill || reason=crashed
である、render-process-gone
イベントが発生します。 レンダラープロセスを共有している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
string
このウェブページのユーザエージェントをオーバーライドします。
contents.getUserAgent()
戻り値 string
- このウェブページのユーザエージェント。
contents.insertCSS(css[, options])
css
string
戻り値 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
string
戻り値 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
stringuserGesture
boolean (任意) - 省略値はfalse
。
戻り値 Promise<any>
- 実行されたコードの結果で resolve する Promise。コードの結果が reject な Promise である場合は reject な 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) // fetch 呼び出しから来た JSON オブジェクトになります。
})
contents.executeJavaScriptInIsolatedWorld(worldId, scripts[, userGesture])
worldId
Integer - JavaScript を実行するワールドの ID。0
はデフォルトのワールド で、999
は Electron のcontextIsolation
機能で使用されるワールドです。 任意の整数を指定できます。scripts
WebSource[]userGesture
boolean (任意) - 省略値はfalse
。
戻り値 Promise<any>
- 実行されたコードの結果で resolve する Promise。コードの結果が reject な Promise である場合は reject な Promise。
executeJavaScript
のように動きますが、 scripts
はイソレートコンテキスト内で評価します。
contents.setIgnoreMenuShortcuts(ignore)
ignore
boolean
この WebContents がフォーカスされている間、アプリケーションのメニューショートカットを無視します。
contents.setWindowOpenHandler(handler)
-
handler
Function<WindowOpenHandlerResponse>details
Objecturl
string -window.open()
に渡されて 解決された URL。 例えばwindow.open('foo')
でウインドウを開くと、これはhttps://the-origin/the/current/path/foo
のようになります。frameName
string -window.open()
で指定されたウインドウ名features
string -window.open()
で指定されたウインドウ機能のカンマ区切りリスト。disposition
string -default
、foreground-tab
、background-tab
、new-window
、other
にできます。referrer
Referrer - 新規ウインドウへ渡されるリファラ。 Referrer のポリシーに依存しているので、Referrer
ヘッダを送信されるようにしてもしなくてもかまいません。postBody
PostBody (任意) - 新しいウインドウに送信する POST データと、それに設定する適切なヘッダ。 送信する POST データが無い場合、値はnull
になります。 これはtarget=_blank
を設定したフォームによってウィンドウが作成されている場合にのみセットされます。
戻り値
WindowOpenHandlerResponse
-{ action: 'deny' }
をセットすると新規ウインドウの作成をキャンセルします。{ action: 'allow' }
を返すと新規ウインドウが作成されます。 null、undefined、規定の 'action' の値を持たないオブジェクトといった認識されない値を返すと、コンソールエラーになり、{action: 'deny'}
を返すのと同じ効果となります。
window.open()
、target="_blank"
のリンク、リンクのシフトクリック、<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 です。
指定の拡大率に変更します。 拡大率は百分率なので、300% = 3.0 です。
拡大率は 0.0 より大きい必要があります。
contents.getZoomFactor()
戻り値 number
- 現在の拡大率。
contents.setZoomLevel(level)
level
number - 拡大レベル。
指定レベルに拡大レベルを変更します。 原寸は 0 で、各増減分はそれぞれ 20% ずつの拡大または縮小を表し、デフ ォルトで元のサイズの 300% から 50% までに制限されています。 この式は 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()
ウェブページの undo
編集コマンドを実行します。
contents.redo()
ウェブページの redo
編集コマンドを実行します。
contents.cut()
ウェブページの cut
編集コマンドを実行します。
contents.copy()
ウェブページの copy
編集コマンドを実行します。
contents.centerSelection()
ウェブページでの現在の選択テキストを中央揃えにします。
contents.copyImageAt(x, y)
x
Integery
Integer
指定した位置の画像をクリップボードにコピーします。
contents.paste()
ウェブページの paste
編集コマンドを実行します。
contents.pasteAndMatchStyle()
ウェブページの pasteAndMatchStyle
編集コマンドを実行します。
contents.delete()
ウェブページの delete
編集コマンドを実行します。
contents.selectAll()
ウェブページの selectAll
編集コマンドを実行します。
contents.unselect()
ウェブページの unselect
編集コマンドを実行します。
contents.scrollToTop()
現在の webContents
を一番上までスクロールします。
contents.scrollToBottom()
現在の webContents
を一番下までスクロールします。
contents.adjustSelection(options)
フォーカスされているフレーム内の現在のテキスト選択の始点と終点を、指定の量だけ調整します。 負の値を指定すると選択範囲はドキュメントの先頭方向に、正の値を指定すると選択範囲はドキュメントの末尾方向に移動します。
サンプル:
const win = new BrowserWindow()
// 選択範囲の開始を 1 文字先に、
// 選択範囲の終了を 5 文字先に調節します。
win.webContents.adjustSelection({ start: 1, end: 5 })
// 選択範囲の開始を 2 文字先に、
// 選択範囲の終了を 3 文字手前に調節します。
win.webContents.adjustSelection({ start: 2, end: -3 })
win.webContents.adjustSelection({ start: 1, end: 5 })
を呼び出すと
以前:
適用後:
contents.replace(text)
text
string
ウェブページの replace
編集コマンドを実行します。
contents.replaceMisspelling(text)
text
string
ウェブページの replaceMisspelling
編集コマンドを実行します。
contents.insertText(text)
text
string
戻り値 Promise<void>
フォーカスされた要素に text
を挿入します。
contents.findInPage(text[, options])
text
string - 検索するコンテンツ。空にしてはいけません。
戻り値 Integer
- リクエストに使われたリクエスト ID。
ウェブページ内の 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 (任意) - キャプチャするページ内の領域。opts
Object (任意)stayHidden
boolean (任意) - ページを表示せずに非表示のままにします。 省略値はfalse
です。stayAwake
boolean (任意) - システムをスリープさせずに、起きたままにします。 省略値はfalse
です。
戻り値 Promise<NativeImage>
- NativeImage を解決します
rect
内のページのスナップショットをキャプチャします。 rect
を省略すると、表示されているページ全体をキャプチャします。 ブラウザーウインドウが非表示でもキャプチャ回数がゼロではない場合、ページは表示されていると見なされます。 ページを非表示のままにする場合は、stayHidden
を true に設定していることを確認してください。
contents.isBeingCaptured()
Returns 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)
戻り値 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', () => {
// デフォルトの印刷オプションを使用します
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
指定したパスをデベロッパー ツールのワークスペースに追加します。 デベロッパー ツールが生成された後で使用しなければいけません。
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.webContents.on('devtools-opened', () => {
win.webContents.addWorkSpace(__dirname)
})
contents.removeWorkSpace(path)
path
string
開発者向けツールのワークスペースから指定したパスを削除します。
contents.setDevToolsWebContents(devToolsWebContents)
devToolsWebContents
WebContents
devToolsWebContents
を開発者向けツールを表示するターゲット WebContents
として使用します。
devToolsWebContents
はナビゲーションを行ってはいけません。また、コール後に他の目的に使用することはできません。
デフォルトでは、Electron は開発者が制御を非常に制限したネイティブビューを持つ内部 WebContents
を作成することによって開発者向けツールを管理します。 setDevToolsWebContents
メソッドでは、開発者は任意の WebContents
を使用して、BrowserWindow
、BrowserView
、<webview>
タグなどの開発者向けツールを表示できます。
開発者向けツールを閉じても devToolsWebContents
は破棄されないことに注意してください。 devToolsWebContents
を破棄するのは呼び出し元の責任です。
<webview>
タグ内で開発者向けツールを表示する例:
<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>
// メインプロセス
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
内で開発者向けツールを表示する例:
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])
開発者向けツールを開く。
contents
が <webview>
タグである場合、デフォルトでは mode
が detach
になり、空の mode
を明示的に渡すと最後に使用されたドックステートを使用して強制的に実行されます。
Windows では、Windows コントロールオーバーレイが 有効になっているとデベロッパー ツールは mode: 'detach'
で開かれます。
contents.closeDevTools()
開発者向けツールを閉じる。
contents.isDevToolsOpened()
戻り値 boolean
- デベロッパー ツールが開かれているかどうか。
contents.isDevToolsFocused()
戻り値 boolean
- デベロッパー ツールがフォーカスされているかどうか。
contents.getDevToolsTitle()
戻り値 string
- デベロッパー ツールウインドウのタイトル。 これはデベロッパー ツールが undocked
または detach
モードで開かれている場合にのみ表示されます。
contents.setDevToolsTitle(title)
title
string
デベロッパー ツールのウインドウのタイトルを title
に変更します。 これはデベロッパー ツールが undocked
または detach
モードで開かれている場合にのみ表示されます。
contents.toggleDevTools()
開発者向けツールをトグル切り替えします。
contents.inspectElement(x, y)
x
Integery
Integer
(x
, y
) の位置の要素の検査を開始します。
contents.inspectSharedWorker()
共有ワーカーコンテキストの開発者向けツールを開きます。
contents.inspectSharedWorkerById(workerId)
workerId
string
ID に基づいて共有ワーカーのインスペクターを起動します。
contents.getAllSharedWorkers()
戻り値 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、Symbol、WeakMap、WeakSet の送信は、例外が送出されます。
注意: DOM オブジェクトや特殊な Electron オブジェクトなど、非標準の JavaScript 型を送信すると例外が発生します。
レンダラープロセスは ipcRenderer
モジュールで channel
を聞いてメッセージを処理できます。
与えられたレンダラーコンテキストの frameId
を取得したい場合は、webFrame.routingId
の値を使用します。 以下は例です。
// レンダラープロセス内
console.log('My frameId is:', require('electron').webFrame.routingId)
メインプロセス内の受信した IPC メッセージすべてから frameId
を読み取ることもできます。
// メインプロセス内
ipcMain.on('ping', (event) => {
console.info('Message came from frameId:', event.frameId)
})
contents.postMessage(channel, message, [transfer])
channel
stringmessage
anytransfer
MessagePortMain[] (任意)
メッセージをレンダラープロセスに送信し、任意でゼロ個以上の MessagePortMain
オブジェクトの所有権を転送します。
転送された MessagePortMain
オブジェクトは、レンダラープロセスで発生したイベントの ports
プロパティにアクセスすれば利用できます。 レンダラーに着くと、それらはネイティブの DOM MessagePort
オブジェクトになります。
以下がその例です。
// メインプロセス
const win = new BrowserWindow()
const { port1, port2 } = new MessageChannelMain()
win.webContents.postMessage('port', { message: 'hello' }, [port1])
// レンダラープロセス
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
プレゼンテーションイベントとキャプチャされたフレームの監視を開始し、プレゼンテーションイベントがあれば、callbabck
が 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 では空にできません。
現在の D&D 操作のドラッグアイテムに item
をセットします。file
はドラッグされるファイルへの絶対パスで、icon
はドラッグするときにカーソルの下に表示される画像です。
contents.savePage(fullPath, saveType)
fullPath
string - ファイルの絶対パス。saveType
string - 保存のタイプを指定します。HTMLOnly
- ページの HTML だけを保存する。HTMLComplete
- 完全な HTML ページを保存する。MHTML
- MHTML として完全な HTML ページを保存する。
戻り値 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()
このウェブコンテンツが入っているウインドウの完全な再描画をスケジュールします。
もし オフスクリーンレンダリング が有効であれば、そのフレームを無効にし、'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 を非公開にします。 このポリシーが使用される WebRTC は、プロキシサーバーが UDP をサポートしていない限り、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 が登録されるウェブコンテンツ。
Returns string
- WebContents ストリームの識別子。 この識別子は tab
の chromeMediaSource
を使う navigator.mediaDevices.getUserMedia
で利用できます。 この識別子は登録されたウェブコンテンツのみにおいて、10 秒間だけ有効です。
contents.getOSProcessId()
戻り値 Integer
- 関連するレンダラープロセスのオペレーティングシステムの pid
。
contents.getProcessId()
戻り値 Integer
- 関連するレンダラーの Chromium 内部の pid
。 フレーム特有のナビゲーションイベント (did-frame-navigate
など) で渡される frameProcessId
と比較できます。
contents.takeHeapSnapshot(filePath)
filePath
string - 出力ファイルのパス
戻り値 Promise<void>
- スナップショットの作成が成功したかどうかを示します。
V8 ヒープのスナップショットを撮り、それを filePath
に保存します。
contents.getBackgroundThrottling()
戻り値 boolean
- ページがバックグラウンドになったときに、この WebContents がアニメーションやタイマーを抑制するかどうか。 これは Page Visibility API にも影響を与えます。
contents.setBackgroundThrottling(allowed)
History
allowed
boolean
ページがバックグラウンドになったときにこの WebContents がアニメーションとタイマーを抑制するかどうかを制御します。 これは Page Visibility API にも影響を与えます。
contents.getType()
Returns string
- webContents の型。 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
このウェブページのユーザーエージェントを決定する string
プロパティ。
contents.zoomLevel
このウェブコンテンツのズームレベルを決定する number
プロパティ。
原寸は 0 で、各増減分はそれぞ れ 20% ずつの拡大または縮小を表し、デフォルトで元のサイズの 300% から 50% までに制限されています。 The formula for this is scale := 1.2 ^ level
.
contents.zoomFactor
number
型のプロパティです。このウェブコンテンツのズーム率を決定します。
ズーム率は百分率のズームなので、300% = 3.0 になります。
contents.frameRate
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 | null
型のプロパティ。その WebContents
に関連付けられたデベロッパー ツール の WebContents
を表します。
注釈: 開発者向けツールが閉じられたときに null
になる可能性があるの で、このオブジェクトは決して格納しないで下さい。
contents.debugger
読み出し専用
この webContents の Debugger
インスタンス。
contents.backgroundThrottling
History
boolean
型のプロパティです。ページがバックグラウンドになったときに、この WebContents がアニメーションやタイマーを抑制するかどうかを決定します。 これは Page Visibility API にも影響を与えます。
contents.mainFrame
読み出し専用
WebFrameMain
型のプロパティで、ページの最上位階層のフレームを表します。
contents.opener
読み出し専用
WebFrameMain
型のプロパティで、この WebContents を開いたフレームを表します。open() あるいは target 属性を付けたリンクへナビゲートしたときの WebContents です。