网页内容 | webContents
呈现和控制网页。
Process: Main
webContents
是一个EventEmitter。它负责渲染和控制网页,并且是该BrowserWindow
对象的属性。访问该webContents
对象的示例:
const {BrowserWindow} = require('electron')
let win = new BrowserWindow({width: 800, height: 1500})
win.loadURL('http://github.com')
let contents = win.webContents
console.log(contents)
方法
这些方法可以从webContents
模块访问:
const {webContents} = require('electron')
console.log(webContents)
webContents.getAllWebContents()
返回WebContents[]
- 所有WebContents
实例的数组。这将包含所有窗口,网页浏览,已打开的devtools和devtools扩展背景页面的网页内容。
webContents.getFocusedWebContents()
返回WebContents
- 在此应用程序中关注的Web内容,否则返回null
。
webContents.fromId(id)
id
整数
返回WebContents
- 具有给定ID的WebContents实例。
类:WebContents
渲染并控制BrowserWindow实例的内容。
过程:主
实例事件
Event: ‘did-finish-load’
导航完成onload
时发出,即选项卡的旋转器已停止旋转,并且事件已发送。
Event: ‘did-fail-load’
返回:
event
EventerrorCode
IntegererrorDescription
StringvalidatedURL
StringisMainFrame
Boolean
这个事件就像是did-finish-load
在加载失败或被取消时发出的,例如window.stop()
被调用。错误代码的完整列表及其含义可在此处找到。
Event: ‘did-frame-finish-load’
返回:
event
EventisMainFrame
Boolean
当一个框架完成导航时发射。
Event: ‘did-start-loading’
对应于选项卡的旋转器开始旋转时的时间点。
Event: ‘did-stop-loading’
对应于标签的旋转器停止旋转的时间点。
Event: ‘did-get-response-details’
返回:
event
Eventstatus
BooleannewURL
StringoriginalURL
StringhttpResponseCode
IntegerrequestMethod
Stringreferrer
Stringheaders
ObjectresourceType
String
当有关所请求资源的详细信息可用时发出。status
指示下载资源的套接字连接。
Event: ‘did-get-redirect-request’
返回:
event
EventoldURL
StringnewURL
StringisMainFrame
BooleanhttpResponseCode
IntegerrequestMethod
Stringreferrer
Stringheaders
Object
在请求资源时收到重定向时发出。
Event: ‘dom-ready’
返回:
event
Event
加载给定帧中的文档时发出。
Event: ‘page-favicon-updated’
返回:
event
Eventfavicons
String[] - Array of URLs
网页收到图标网址时发送。
Event: ‘new-window’
返回:
event
事件url
串frameName
串disposition
字符串-可以是default
,foreground-tab
,background-tab
,new-window
,save-to-disk
和other
。options
对象 - 将用于创建新的选项BrowserWindow
。additionalFeatures
字符串[] - 给予的非标准功能(未由Chromium或Electron处理的功能)window.open()
。
当页面请求打开一个新的窗口时发出url
。它可以通过window.open
或外部链接请求<a target='_blank'>
。
默认情况下,BrowserWindow
将为该创建一个新的url
。
调用event.preventDefault()
将阻止Electron自动创建新的BrowserWindow
。如果您调用event.preventDefault()
并手动创建新的,BrowserWindow
则必须设置event.newGuest
为引用新BrowserWindow
实例,否则可能会导致意外行为。例如:
myBrowserWindow.webContents.on('new-window', (event, url) => {
event.preventDefault()
const win = new BrowserWindow({show: false})
win.once('ready-to-show', () => win.show())
win.loadURL(url)
event.newGuest = win
})
Event: ‘will-navigate’
返回:
event
Eventurl
String
当用户或页面想要开始导航时发射。当window.location
对象发生更改或用户单击页面中的链接时可能会发生这种情况。
当导航以API webContents.loadURL
和类似的API编程启动时,此事件不会发出webContents.back
。
它也不会用于页内导航,例如单击锚链接或更新window.location.hash。 为此,请使用did-navigate-in-page事件。
调用event.preventDefault()
将阻止导航。
Event: ‘did-navigate’
返回:
event
Eventurl
String
导航完成时发射。
此事件不是用于页内导航的,例如单击锚链接或更新window.location.hash。 为此,请使用did-navigate-in-page事件。
Event: ‘did-navigate-in-page’
返回:
event
Eventurl
StringisMainFrame
Boolean
发生页内导航时发出。
当页内导航发生时,页面URL会发生变化,但不会导致页面外的导航。发生这种情况的例子是当锚点链接被点击或DOM hashchange
事件被触发时。
Event: ‘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.showMessageBox(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()
}
})
Event: ‘crashed’
返回:
event
Eventkilled
Boolean
渲染器进程崩溃或被杀时发出。
Event: ‘plugin-crashed’
返回:
event
Eventname
Stringversion
String
插件进程崩溃时发出。
Event: ‘destroyed’
webContents
被销毁时被发射。
Event: ‘before-input-event’
返回:
event
事件input
对象 - 输入属性type
字符串 -keyUp
或者keyDown
key
字符串 - 相当于KeyboardEvent.keycode
字符串 - 相当于KeyboardEvent.codeisAutoRepeat
布尔值 - 等同于KeyboardEvent.repeatshift
布尔值 - 等同于KeyboardEvent.shiftKeycontrol
布尔值 - 相当于KeyboardEvent.controlKeyalt
布尔值 - 等同于KeyboardEvent.altKeymeta
布尔值 - 相当于KeyboardEvent.metaKey
分派前发射keydown
和keyup
活动页面。调用event.preventDefault
将阻止页面keydown
/ keyup
事件和菜单快捷方式。
要仅禁止菜单快捷方式,请使用setIgnoreMenuShortcuts
:
const {BrowserWindow} = require('electron')
let 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)
})
Event: ‘devtools-opened’
DevTools打开时发出。
Event: ‘devtools-closed’
当DevTools关闭时发出。
Event: ‘devtools-focused’
在DevTools关注/打开时发出。
Event: ‘certificate-error’
返回:
event
事件url
串error
字符串 - 错误代码certificate
证书callback
功能isTrusted
布尔值 - 指示证书是否可以被视为可信
当无法验证发射certificate
的url
。
用法与certificate-error
事件相同app
。
Event: ‘select-client-certificate’
返回:
event
Eventurl
URLcertificateList
Certificate[]callback
Functioncertificate
Certificate - Must be a certificate from the given list
在请求客户端证书时发送。
用法与app的select-client-certificate事件相同。
Event: ‘login’
返回:
event
Eventrequest
Objectmethod
Stringurl
URLreferrer
URL
authInfo
ObjectisProxy
Booleanscheme
Stringhost
Stringport
Integerrealm
String
callback
Functionusername
Stringpassword
String
在webContents
想要进行基本身份验证时发出。
用法与app的登录事件相同。
Event: ‘found-in-page’
返回:
event
事件result
目的requestId
整数activeMatchOrdinal
整数 - 活动比赛的位置。matches
整数 - 匹配数。selectionArea
对象 - 第一个匹配区域的坐标。finalUpdate
布尔
当结果可用于webContents.findInPage
请求时发出。
Event: ‘media-started-playing’
媒体开始播放时发射。
Event: ‘media-paused’
媒体暂停播放或播放完毕时播放。
Event: ‘did-change-theme-color’
页面主题颜色改变时发出。这通常是由于遇到元标记:
<meta name='theme-color' content='#ff0000'>
Event: ‘update-target-url’
返回:
event
Eventurl
String
鼠标移过链接或键盘将焦点移动到链接时发出。
Event: ‘cursor-changed’
返回:
event
Eventtype
Stringimage
NativeImage (optional)scale
Float (optional) - scaling factor for the custom cursorsize
Size (optional) - the size of theimage
hotspot
Point (optional) - coordinates of the custom cursor’s hotspot
当游标类型改变时发射。所述type
参数可以是default
,crosshair
,pointer
,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
,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
。
如果type
参数是custom
,该image
参数将举行自定义光标图像中NativeImage
,和scale
,size
以及hotspot
将举行有关自定义光标的附加信息。
Event: ‘context-menu’
返回:
event
事件params
目的x
整数 - x坐标y
整数 - 并协调linkURL
字符串 - 封装调用上下文菜单的节点的链接的URL。linkText
字符串 - 与链接关联的文本。如果链接的内容是图像,可能是空字符串。pageURL
字符串 - 调用上下文菜单的顶级页面的URL。frameURL
字符串 - 调用上下文菜单的子帧的URL。srcURL
字符串 - 调用上下文菜单的元素的源URL。包含来源网址的元素是图片,音频和视频。mediaType
String - 上下文菜单被调用的节点的类型。可以none
,image
,audio
,video
,canvas
,file
或plugin
。hasImageContents
Boolean - 在具有非空内容的图像上是否调用上下文菜单。isEditable
布尔型 - 上下文是否可编辑。selectionText
字符串 - 上下文菜单被调用的选择文本。titleText
字符串 - 上下文被调用的选择的标题或替代文本。misspelledWord
字符串 - 光标下的拼写错误的单词(如果有)。frameCharset
字符串 - 调用菜单的框架的字符编码。inputFieldType
字符串 - 如果上下文菜单在输入字段上被调用,则该字段的类型。可能的值是none
,plainText
,password
,other
。menuSourceType
字符串 - 调用上下文菜单的输入源。可以none
,mouse
,keyboard
,touch
,touchMenu
。mediaFlags
Object - 调用上下文菜单的media元素的标志。inError
布尔值 - 媒体元素是否已崩溃。isPaused
布尔值 - 媒体元素是否已暂停。isMuted
布尔值 - 媒体元素是否被静音。hasAudio
布尔值 - 媒体元素是否具有音频。isLooping
布尔值 - 媒体元素是否正在循环。isControlsVisible
布尔值 - 媒体元素的控件是否可见。canToggleControls
布尔值 - 媒体元素的控件是否可切换。canRotate
布尔值 - 媒体元素是否可以旋转。
- `editFlags` Object - These flags indicate whether the renderer believes it is able to perform the corresponding action.
- `canUndo` Boolean - Whether the renderer believes it can undo.
- `canRedo` Boolean - Whether the renderer believes it can redo.
- `canCut` Boolean - Whether the renderer believes it can cut.
- `canCopy` Boolean - Whether the renderer believes it can copy
- `canPaste` Boolean - Whether the renderer believes it can paste.
- `canDelete` Boolean - Whether the renderer believes it can delete.
- `canSelectAll` Boolean - Whether the renderer believes it can select all.
当需要处理新的上下文菜单时发出。
Event: ‘select-bluetooth-device’
返回:
event
事件devices
BluetoothDevice类[]callback
功能deviceId
串
在调用时需要选择蓝牙设备时发射navigator.bluetooth.requestDevice
。应该启用使用navigator.bluetooth
API webBluetooth
。如果event.preventDefault
未被调用,则将选择第一个可用设备。callback
应该被调用deviceId
来选择,传递空字符串callback
将取消请求。
const {app, webContents} = require('electron')
app.commandLine.appendSwitch('enable-web-bluetooth')
app.on('ready', () => {
webContents.on('select-bluetooth-device', (event, deviceList, callback) => {
event.preventDefault()
let result = deviceList.find((device) => {
return device.deviceName === 'test'
})
if (!result) {
callback('')
} else {
callback(result.deviceId)
}
})
})
Event: ‘paint’
返回:
event
EventdirtyRect
Rectangleimage
NativeImage - The image data of the whole frame.
生成新帧时发射。只有脏区域被传入缓冲区。
const {BrowserWindow} = require('electron')
let win = new BrowserWindow({webPreferences: {offscreen: true}})
win.webContents.on('paint', (event, dirty, image) => {
// updateBitmap(dirty, image.getBitmap())
})
win.loadURL('http://github.com')
Event: ‘devtools-reload-page’
当devtools窗口指示webContents重新加载时发出
Event: ‘will-attach-webview’
返回:
event
事件webPreferences
对象 - 将由访客页面使用的Web首选项。可以修改此对象以调整访客页面的首选项。params
对象 - 其他<webview>
参数,如src
URL。可以修改此对象以调整访客页面的参数。
当<webview>
网站内容附加到网站内容时发送。通话event.preventDefault()
将破坏访客页面。
此事件可用于配置webPreferences
的webContents
的<webview>
的加载在它之前,并提供了设置无法通过设置设置的功能<webview>
属性。
注意:指定的preload
脚本选项将显示为preloadURL
(不preload
)在webPreferences
此事件发出的对象中。
实例方法
contents.loadURL(url[, options])
url
串options
对象(可选)httpReferrer
字符串(可选) - HTTP引荐网址。userAgent
字符串(可选) - 发起请求的用户代理。extraHeaders
字符串(可选) - 额外的标题由“\ n”分隔postData
(UploadRawData [] | UploadFile [] | UploadFileSystem [] | UploadBlob []) - (可选)baseURLForDataURL
字符串(可选) - 基础URL(带尾随路径分隔符)用于由数据URL加载的文件。只有当指定的url
是数据url并需要加载其他文件时,才需要此选项。
在窗口中加载网址。 该网址必须包含协议前缀,例如 http://或file://。 如果负载应该绕过http缓存,那么使用pragma头来实现它。
const {webContents} = require('electron')
const options = {extraHeaders: 'pragma: no-cache\n'}
webContents.loadURL('https://github.com', options)
contents.downloadURL(url)
url
串
在url
无需导航的情况下启动资源下载。该will-download
事件session
将被触发。
contents.getURL()
返回String
- 当前网页的URL。
const {BrowserWindow} = require('electron')
let win = new BrowserWindow({width: 800, height: 600})
win.loadURL('http://github.com')
let currentURL = win.webContents.getURL()
console.log(currentURL)
contents.getTitle()
返回String
- 当前网页的标题。
contents.isDestroyed()
返回Boolean
- 网页是否被销毁。
contents.focus()
专注于网页。
contents.isFocused()
返回Boolean
- 网页是否关注。
contents.isLoading()
返回Boolean
- 网页是否仍在加载资源。
contents.isLoadingMainFrame()
返回Boolean
- 主框架(不仅仅是内部框架或框架中的框架)是否仍在加载。
contents.isWaitingForResponse()
返回Boolean
- 网页是否正在等待来自页面主资源的第一个响应。
contents.stop()
停止任何挂起的导航。
contents.reload()
重新加载当前网页。
contents.reloadIgnoringCache()
重新加载当前页面并忽略缓存。
contents.canGoBack()
返回Boolean
- 浏览器是否可以返回到之前的网页。
contents.canGoForward()
返回Boolean
- 浏览器是否可以转到下一个网页。
contents.canGoToOffset(offset)
offset
Integer
返回Boolean
- 网页是否可以进入offset
。
contents.clearHistory()
清除导航历史记录。
contents.goBack()
使浏览器返回一个网页。
contents.goForward()
使浏览器前进一个网页。
contents.goToIndex(index)
index
Integer
将浏览器导航到指定的绝对网页索引。
contents.goToOffset(offset)
offset
Integer
导航到“当前条目”的指定偏移量。
contents.isCrashed()
返回Boolean
- 渲染器进程是否崩溃。
contents.setUserAgent(userAgent)
userAgent
String
覆盖此网页的用户代理。
contents.getUserAgent()
返回String
- 此网页的用户代理。
contents.insertCSS(css)
css
String
将CSS注入当前网页。
contents.executeJavaScript(code[, userGesture, callback])
code
串userGesture
布尔(可选) - 默认是false
。callback
功能(可选) - 脚本执行后调用。result
任何
返回Promise
- 一种以执行代码的结果解决的承诺,或者如果代码的结果是被拒绝的承诺,则被拒绝。
code
在页面中进行评估。
在浏览器窗口requestFullScreen
中,只能通过用户的手势调用某些HTML API 。设置userGesture
为true
将删除此限制。
如果执行的代码的结果是promise,则回调结果将是promise的解析值。我们建议您使用返回的Promise来处理导致Promise的代码。
contents.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.setIgnoreMenuShortcuts(ignore)
Experimental
ignore
Boolean
此Web内容的焦点时忽略应用程序菜单快捷方式。
contents.setAudioMuted(muted)
muted
Boolean
将当前网页上的音频静音。
contents.isAudioMuted()
返回Boolean
- 此页面是否已被静音。
contents.setZoomFactor(factor)
factor
Number - Zoom factor.
将缩放系数更改为指定的系数。缩放系数是缩放百分比除以100,所以300%= 3.0。
contents.getZoomFactor(callback)
callback
FunctionzoomFactor
Number
发送请求以获取当前缩放因子,callback
将会使用该参数调用callback(zoomFactor)
。
contents.setZoomLevel(level)
level
Number - Zoom level
将缩放级别更改为指定级别。原始大小为0,每个增量高于或低于分别代表缩小20%或更小,分别默认为原始大小的300%和50%。
contents.getZoomLevel(callback)
callback
FunctionzoomLevel
Number
发送请求以获取当前缩放级别,callback
将会使用该级别调用callback(zoomLevel)
。
contents.setZoomLevelLimits(minimumLevel, maximumLevel)
minimumLevel
NumbermaximumLevel
Number
弃用:setVisualZoomLevelLimits
改为调用可视缩放级别限制。Electron 2.0将删除此方法。
contents.setVisualZoomLevelLimits(minimumLevel, maximumLevel)
minimumLevel
NumbermaximumLevel
Number
设置最大和最小捏缩放级别。
contents.setLayoutZoomLevelLimits(minimumLevel, maximumLevel)
minimumLevel
NumbermaximumLevel
Number
设置最大和最小布局(即非可视)缩放级别。
contents.undo()
执行undo
网页中的编辑命令。
contents.redo()
执行redo
网页中的编辑命令。
contents.cut()
执行cut
网页中的编辑命令。
contents.copy()
执行copy
网页中的编辑命令。
contents.copyImageAt(x, y)
x
Integery
Integer
将给定位置的图像复制到剪贴板。
contents.paste()
执行paste
网页中的编辑命令。
contents.pasteAndMatchStyle()
执行pasteAndMatchStyle
网页中的编辑命令。
contents.delete()
执行delete
网页中的编辑命令。
contents.selectAll()
执行selectAll
网页中的编辑命令。
contents.unselect()
执行unselect
网页中的编辑命令。
contents.replace(text)
text
String
执行replace
网页中的编辑命令。
contents.replaceMisspelling(text)
text
String
执行replaceMisspelling
网页中的编辑命令。
contents.insertText(text)
text
String
插入text
到被聚焦的元素。
contents.findInPage(text[, options])
text
字符串 - 要搜索的内容不能为空。options
对象(可选)forward
布尔值 - (可选)是向前还是向后搜索,默认值为true
。findNext
布尔值 - (可选)操作是第一次请求还是后续操作,默认为false
。matchCase
布尔值 - (可选)搜索是否区分大小写,默认为false
。wordStart
布尔 - (可选)是否仅查看单词的开头。默认为false
。medialCapitalAsWordStart
布尔值 - (可选)结合使用时wordStart
,如果匹配以大写字母后跟小写字母或非字母开头,则接受单词中间的匹配。接受其他几个词内匹配,默认为false
。
开始请求查找text
网页中的所有匹配项,并返回一个Integer
表示请求使用的请求ID。请求的结果可以通过订阅found-in-page
事件来获得。
contents.stopFindInPage(action)
action
字符串 - 指定结束webContents.findInPage
请求时要执行的操作。clearSelection
- 清除选择。keepSelection
- 将选择转换为正常选择。activateSelection
- 重点并单击选择节点。
使用提供的操作停止webContents的任何findInPage请求。
const {webContents} = require('electron')
webContents.on('found-in-page', (event, result) => {
if (result.finalUpdate) webContents.stopFindInPage('clearSelection')
})
const requestId = webContents.findInPage('api')
console.log(requestId)
contents.capturePage([rect, ]callback)
rect
矩形(可选) - 要捕获的页面区域callback
功能image
NativeImage
捕获内部页面的快照rect
。完成callback
后将被称为callback(image)
。image
是一个存储快照数据的NativeImage实例。省略rect
将捕捉整个可见页面。
contents.hasServiceWorker(callback)
callback
功能hasWorker
布尔
检查是否有ServiceWorker注册并返回一个布尔值作为响应callback
。
contents.unregisterServiceWorker(callback)
callback
功能success
布尔
取消注册任何ServiceWorker(如果存在),并返回一个布尔值作为对callback
JS承诺何时执行的响应,或当JS承诺被拒绝时返回false。
contents.getPrinters()
获取系统打印机列表。
返回 PrinterInfo[]
contents.print([options])
options
对象(可选)silent
布尔(可选) - 不要求用户进行打印设置。默认是false
。printBackground
布尔(可选) - 还打印网页的背景颜色和图像。默认是false
。deviceName
字符串(可选) - 设置要使用的打印机设备名称。默认是''
。
打印窗口的网页。如果silent
设置为true
,Electron将选择系统的默认打印机(如果deviceName
为空)以及打印的默认设置。
调用window.print()
网页等同于调用webContents.print({silent: false, printBackground: false, deviceName: ''})
。
使用page-break-before: always;
CSS样式强制打印到新页面。
contents.printToPDF(options, callback)
options
对象marginsType
整数 - (可选)指定要使用的边距类型。默认边距使用0,无边距使用1,最小边距使用2。pageSize
字符串 - (可选)指定生成的PDF的页面大小。可以A3
,A4
,A5
,Legal
,Letter
,Tabloid
或包含对象height
,并width
在微米。printBackground
布尔值 - (可选)是否打印CSS背景。printSelectionOnly
布尔值 - (可选)是否仅打印选择。landscape
布尔 - (可选)true
横向,false
纵向。
callback
功能error
错误data
缓冲
使用Chromium的预览打印自定义设置将窗口的网页打印为PDF。
回调将在回调(错误,数据)完成时调用。 数据是包含生成的PDF数据的缓冲区。
如果在网页中使用@page CSS at-rule,则该景观将被忽略。
默认情况下,空白options
将被视为:
{
marginsType: 0,
printBackground: false,
printSelectionOnly: false,
landscape: false
}
使用page-break-before: always;
CSS样式强制打印到新页面。
一个webContents.printToPDF
例子:
const {BrowserWindow} = require('electron')
const fs = require('fs')
let win = new BrowserWindow({width: 800, height: 600})
win.loadURL('http://github.com')
win.webContents.on('did-finish-load', () => {
// Use default printing options
win.webContents.printToPDF({}, (error, data) => {
if (error) throw error
fs.writeFile('/tmp/print.pdf', data, (error) => {
if (error) throw error
console.log('Write PDF successfully.')
})
})
})
contents.addWorkSpace(path)
path
String
将指定的路径添加到DevTools工作区。必须在DevTools创建后使用:
const {BrowserWindow} = require('electron')
let win = new BrowserWindow()
win.webContents.on('devtools-opened', () => {
win.webContents.addWorkSpace(__dirname)
})
contents.removeWorkSpace(path)
path
String
从DevTools工作区中删除指定的路径。
contents.openDevTools([options])
options
对象(可选)mode
字符串-打开与指定的停靠状态devtools,可以是right
,bottom
,undocked
,detach
。默认为上次使用的码头状态。在undocked
模式下可以停靠。在detach
模式中不是。
打开devtools。
contents.closeDevTools()
关闭devtools。
contents.isDevToolsOpened()
返回Boolean
- devtools是否被打开。
contents.isDevToolsFocused()
返回Boolean
- devtools视图是否集中。
contents.toggleDevTools()
切换开发人员工具。
contents.inspectElement(x, y)
x
Integery
Integer
在位置(x
,y
)开始检查元素。
contents.inspectServiceWorker()
打开服务工作者上下文的开发人员工具。
contents.send(channel[, arg1][, arg2][, ...])
channel
String...args
any[]
通过向渲染器进程发送异步消息channel
,您还可以发送任意参数。参数将在JSON内部序列化,因此不会包含函数或原型链。
渲染过程可以通过监听处理消息channel
与ipcRenderer
模块。
从主进程向渲染进程发送消息的示例:
// In the main process.
const {app, BrowserWindow} = require('electron')
let win = null
app.on('ready', () => {
win = new BrowserWindow({width: 800, height: 600})
win.loadURL(`file://${__dirname}/index.html`)
win.webContents.on('did-finish-load', () => {
win.webContents.send('ping', 'whoooooooh!')
})
})
<!-- index.html -->
<html>
<body>
<script>
require('electron').ipcRenderer.on('ping', (event, message) => {
console.log(message) // Prints 'whoooooooh!'
})
</script>
</body>
</html>
contents.enableDeviceEmulation(parameters)
parameters
对象screenPosition
字符串-指定的屏幕类型效仿(默认值:desktop
)desktop
- 桌面屏幕类型mobile
- 屏幕类型
- `screenSize` [Size](../structures/size/index) - Set the emulated screen size (screenPosition == mobile)
- `viewPosition` [Point](../structures/point/index) - Position the view on the screen (screenPosition == mobile) (default: `{x: 0, y: 0}`)
- `deviceScaleFactor` Integer - Set the device scale factor (if zero defaults to original device scale factor) (default: `0`)
- `viewSize` [Size](../structures/size/index) - Set the emulated view size (empty means no override)
- `fitToView` Boolean - Whether emulated view should be scaled down if necessary to fit into available space (default: `false`)
- `offset` [Point](../structures/point/index) - Offset of the emulated view inside available space (not in fit to view mode) (default: `{x: 0, y: 0}`)
- `scale` Float - Scale of emulated view inside available space (not in fit to view mode) (default: `1`)
使用给定参数启用设备仿真。
contents.disableDeviceEmulation()
禁用启用的设备仿真webContents.enableDeviceEmulation
。
contents.sendInputEvent(event)
event
目的type
串(所需) -的事件的类型,可以是mouseDown
,mouseUp
,mouseEnter
,mouseLeave
,contextMenu
,mouseWheel
,mouseMove
,keyDown
,keyUp
,char
。modifiers
串[] -事件的改性剂组成的数组,可以包括shift
,control
,alt
,meta
,isKeypad
,isAutoRepeat
,leftButtonDown
,middleButtonDown
,rightButtonDown
,capsLock
,numLock
,left
,right
。
将输入发送event
到页面。注:本BrowserWindow
包含内容需要集中的sendInputEvent()
工作。
对于键盘事件,该event
对象还具有以下属性:
keyCode
字符串(必需) - 将作为键盘事件发送的字符。只应使用加速器中的有效密钥代码。
对于鼠标事件,该event
对象还具有以下属性:
x
整数(必需)y
整数(必需)button
字符串-按下按钮,可以left
,middle
,right
globalX
整数globalY
整数movementX
整数movementY
整数clickCount
整数
对于该mouseWheel
事件,该event
对象还具有以下属性:
deltaX
整数deltaY
整数wheelTicksX
整数wheelTicksY
整数accelerationRatioX
整数accelerationRatioY
整数hasPreciseScrollingDeltas
布尔canScroll
布尔
contents.beginFrameSubscription([onlyDirty ,]callback)
onlyDirty
布尔(可选) - 默认为false
callback
功能frameBuffer
缓冲dirtyRect
长方形
开始订阅演示文稿事件和捕获的帧,当有演示事件时callback
将被callback(frameBuffer, dirtyRect)
调用。
这frameBuffer
是一个Buffer
包含原始像素数据。在大多数机器上,像素数据以32位BGRA格式有效存储,但实际表示取决于处理器的字节顺序(大多数现代处理器是小端,在具有高端处理器的机器上,数据采用32位ARGB格式) 。
dirtyRect是一个具有x,y,width,height属性的对象,用于描述页面的哪一部分已重新绘制。 如果仅将dirty设置为true,则frameBuffer将只包含重绘区域。 只有脏的默认值为false。
contents.endFrameSubscription()
结束订阅帧展示事件。
contents.startDrag(item)
item
对象file
字符串或files
数组 - 被拖动的文件的路径。icon
NativeImage - macOS上的图像必须是非空的。
设置item
为当前拖放操作的拖动项目,file
是要拖动的文件的绝对路径,拖动icon
时显示在光标下的图像。
contents.savePage(fullPath, saveType, callback)
fullPath
字符串 - 完整的文件路径。saveType
字符串 - 指定保存类型。HTMLOnly
- 只保存页面的HTML。HTMLComplete
- 保存完整的HTML页面。MHTML
- 将完整的html页面保存为MHTML。
callback
功能 -(error) => {}
。error
错误
返回Boolean
- 如果保存页面的过程已成功启动,则为true。
const {BrowserWindow} = require('electron')
let win = new BrowserWindow()
win.loadURL('https://github.com')
win.webContents.on('did-finish-load', () => {
win.webContents.savePage('/tmp/test.html', 'HTMLComplete', (error) => {
if (!error) console.log('Save page successfully')
})
})
contents.showDefinitionForSelection()
macOS
显示用于搜索页面上所选单词的弹出式字典。
contents.setSize(options)
设置页面的大小。这仅适用于<webview>
访客内容。
options
目的normal
对象(可选) - 页面的正常大小。这可以与该disableguestresize
属性结合使用以手动调整webview客人内容的大小。width
整数height
整数
contents.isOffscreen()
返回Boolean
- 指示是否启用离线渲染。
contents.startPainting()
如果离线渲染启用而不是绘画,请开始绘画。
contents.stopPainting()
如果屏幕外渲染已启用并且绘画,请停止绘画。
contents.isPainting()
返回Boolean
- 如果启用了屏幕外渲染,则返回它是否正在绘制。
contents.setFrameRate(fps)
fps
Integer
如果启用了屏幕外渲染,则将帧速率设置为指定的数字。只有1到60之间的值才被接受。
contents.getFrameRate()
返回Integer
- 如果启用了屏幕外渲染,则返回当前帧速率。
contents.invalidate()
计划对该网页内容所在的窗口进行完整重绘。
如果启用了屏幕外渲染,则会使该帧无效并通过该'paint'
事件生成新的。
contents.getWebRTCIPHandlingPolicy()
返回String
- 返回WebRTC IP处理策略。
contents.setWebRTCIPHandlingPolicy(policy)
policy
字符串 - 指定WebRTC IP处理策略。default
- 公开用户的公共和本地IP。这是默认行为。使用此策略时,WebRTC有权枚举所有接口并绑定它们以发现公共接口。default_public_interface_only
- 公开用户的公共IP,但不公开用户的本地IP。使用此策略时,WebRTC应仅使用http使用的默认路由。这不会公开任何本地地址。default_public_and_private_interfaces
- 公开用户的公共和本地IP。使用此策略时,WebRTC应仅使用http使用的默认路由。这也暴露了相关的默认私人地址。默认路由是OS在多宿主端点上选择的路由。disable_non_proxied_udp
- 不公开或本地IP。使用此策略时,除非代理服务器支持UDP,否则WebRTC应仅使用TCP联系对等或服务器。
通过设置WebRTC IP处理策略,您可以控制哪些IP通过WebRTC公开。有关更多详细信息,请参阅BrowserLeaks。
contents.getOSProcessId()
返回Integer
- pid
关联的渲染器进程的。
实例属性
contents.id
Integer
表示此WebContents的唯一ID。
contents.session
一个Session
由此webContents使用的。
contents.hostWebContents
一个WebContents
可能拥有这个的实例WebContents
。
contents.devToolsWebContents
一个WebContents
DevTools为此WebContents
。
注意:用户不应该存储这个对象,因为null
当DevTools关闭时它可能会变成。
contents.debugger
此webContents的调试器实例。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com