Electron 在渲染进程内可用的模块
Posted 知否
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Electron 在渲染进程内可用的模块相关的知识,希望对你有一定的参考价值。
下面是 Electron
中渲染进程可用的模块:
模块 | 描述 |
---|---|
desktopCapturer | 用来获取可用资源,这个资源可通过 getUserMedia 捕获得到 |
ipcRenderer | 是一个 EventEmitter 类的实例,它提供了有限的方法,可以从渲染进程向主进程发送同步或异步消息,也可以收到主进程的相应 |
remote | 提供了一个简单的跨进程之间通信的方法 |
webFrame | 用来定制当前网页的渲染 |
desktopCapturer模块
desktopCapturer
模块用来获取可用的资源,可以用 getUserMedia
来获取。
示例:
// 在渲染进程中
var desktopCapturer = require(\'electron\').desktopCapturer;
desktopCapturer.getSources({types: [\'window\', \'screen\']}, function(error, sources) {
if (error) throw error;
for (var i = 0; i < sources.length; ++i) {
if (sources[i].name == "Electron") {
navigator.webkitGetUserMedia({
audio: false,
video: {
mandatory: {
chromeMediaSource: \'desktop\',
chromeMediaSourceId: sources[i].id,
minWidth: 1280,
maxWidth: 1280,
minHeight: 720,
maxHeight: 720
}
}
}, gotStream, getUserMediaError);
return;
}
}
});
function gotStream(stream) {
document.querySelector(\'video\').src = URL.createObjectURL(stream);
}
function getUserMediaError(e) {
console.log(\'getUserMediaError\');
}
上述代码中,当调用 navigator.webkitGetUserMedia
时创建一个约束对象,如果使用 desktopCapturer
的资源,必须设置 chromeMediaSource
为 "desktop"
,并且 audio
为 false
。
如果我们想捕获整个桌面的 audio
和 video
,可以设置 chromeMediaSource
为 "screen"
,和 audio
为 true
。 当使用这个方法的时候,不可以指定一个 chromeMediaSourceId
。
ipcRenderer模块
ipcRenderer
模块是一个 EventEmitter
对象的实例,它提供了一些方法可以用来向主进程发送同步或异步消息,也可以收到主进程的响应。
ipcRenderer
模块有下列方法来监听事件:
方法 | 描述 |
---|---|
on | 监听 channel ,当有新消息到达,使用 listener(event, args...) 调用 listener |
once | 为这个事件添加一个一次性 listener 函数 |
removeListener | 从指定的 channel 中的监听者数组删除指定的 listener |
removeAllListeners | 删除所有的监听者,或者删除指定 channel 中的全部 |
ipcRenderer
模块有如下方法来发送消息:
方法 | 描述 |
---|---|
send | 通过 channel 向主进程发送异步消息,也可以发送任意参数,参数会被 JSON 序列化,之后就不会包含函数或原型链 |
sendSync | 通过 channel 向主进程发送同步消息,也可以发送任意参数,参数会被 JSON 序列化,之后就不会包含函数或原型链 |
sendToHost | 类似 ipcRenderer.send ,但是它的事件将发往 host page 的 <webview> 元素,而不是主进程 |
remote模块
remote
模块提供了一种在渲染进程(网页)和主进程之间进行进程间通讯(IPC)的简便途径。
示例:
下面是从渲染进程创建一个浏览器窗口的例子:
const remote = require(\'electron\').remote;
const BrowserWindow = remote.BrowserWindow;
var win = new BrowserWindow({ width: 800, height: 600 });
win.loadURL(\'https://github.com\');
remote
模块的方法有:
方法 | 描述 |
---|---|
require | 返回在主进程中执行 require(module) 所返回的对象 |
getCurrentWindow | 返回该网页所属的 BrowserWindow 对象 |
getCurrentWebContents | 返回该网页的 WebContents 对象 |
getGlobal | 返回在主进程中名为 name 的全局变量(即 global[name] ) |
process | 返回主进程中的 process 对象 |
webFrame模块
webFrame
模块用来定制当前网页的渲染。
示例:
例如将页面放大到 150%
:
var webFrame = require(\'electron\').webFrame;
webFrame.setZoomFactor(2)
web-frame
模块有如下方法:
方法 | 描述 |
---|---|
setZoomFactor | 将缩放参数修改为指定的参数值,缩放参数是百分制的,所以 300% = 3.0 |
getZoomFactor | 返回当前缩放参数值 |
setZoomLevel | 将缩放水平修改为指定的水平值,原始 size 为 0,并且每次增长都表示放大 20% 或缩小 20% |
getZoomLevel | 返回当前缩放水平值 |
setZoomLevelLimits | 设置缩放水平的最大值和最小值 |
setSpellCheckProvider | 为输入框或文本域设置一个拼写检查 provider |
以上是关于Electron 在渲染进程内可用的模块的主要内容,如果未能解决你的问题,请参考以下文章