add three render process's files first

This commit is contained in:
heyunjiang 2016-03-15 15:11:28 +08:00
parent 3c007d1333
commit c2c91b6477
3 changed files with 234 additions and 0 deletions

View file

@ -0,0 +1,64 @@
# desktopCapturer
`desktopCapturer` 模块可用来获取可用资源,这个资源可通过 `getUserMedia` 捕获得到.
```javascript
// 在渲染进程中.
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`.
## 方法
`desktopCapturer` 模块有如下方法:
### `desktopCapturer.getSources(options, callback)`
* `options` Object
* `types` Array - 一个 String 数组,列出了可以捕获的桌面资源类型, 可用类型为 `screen``window`.
* `thumbnailSize` Object (可选) - 建议缩略可被缩放的 size, 默认为 `{width: 150, height: 150}`.
* `callback` Function
发起一个请求,获取所有桌面资源,当请求完成的时候使用 `callback(error, sources)` 调用 `callback` .
`sources` 是一个 `Source` 对象数组, 每个 `Source` 表示了一个捕获的屏幕或单独窗口,并且有如下属性 :
* `id` String - 在 `navigator.webkitGetUserMedia` 中使用的捕获窗口或屏幕的 id . 格式为 `window:XX`
`screen:XX``XX` 是一个随机数.
* `name` String - 捕获窗口或屏幕的描述名 . 如果资源为屏幕,名字为 `Entire Screen``Screen <index>`; 如果资源为窗口, 名字为窗口的标题.
* `thumbnail` [NativeImage](NativeImage.md) - 缩略图.
**注意:** 不能保证 `source.thumbnail` 的 size 和 `options` 中的 `thumnbailSize` 一直一致. 它也取决于屏幕或窗口的缩放比例.

View file

@ -0,0 +1,69 @@
# ipcRenderer
`ipcRenderer` 模块是一个
[EventEmitter](https://nodejs.org/api/events.html) 类的实例. 它提供了有限的方法,你可以从渲染进程向主进程发送同步或异步消息. 也可以收到主进程的相应.
查看 [ipcMain](ipc-main.md) 代码例子.
## 消息监听
`ipcRenderer` 模块有下列方法来监听事件:
### `ipcRenderer.on(channel, listener)`
* `channel` String
* `listener` Function
监听 `channel`, 当有新消息到达,使用 `listener(event, args...)` 调用 `listener` .
### `ipcRenderer.once(channel, listener)`
* `channel` String
* `listener` Function
为这个事件添加一个一次性 `listener` 函数.这个 `listener` 将在下一次有新消息被发送到 `channel` 的时候被请求调用,之后就被删除了.
### `ipcRenderer.removeListener(channel, listener)`
* `channel` String
* `listener` Function
从指定的 `channel` 中的监听者数组删除指定的 `listener` .
### `ipcRenderer.removeAllListeners([channel])`
* `channel` String (optional)
删除所有的监听者,或者删除指定 `channel` 中的全部.
## 发送消息
`ipcRenderer` 模块有如下方法来发送消息:
### `ipcRenderer.send(channel[, arg1][, arg2][, ...])`
* `channel` String
* `arg` (可选)
通过 `channel` 向主进程发送异步消息,也可以发送任意参数.参数会被JSON序列化之后就不会包含函数或原型链.
主进程通过使用 `ipcMain` 模块来监听 `channel`,从而处理消息.
### `ipcRenderer.sendSync(channel[, arg1][, arg2][, ...])`
* `channel` String
* `arg` (可选)
通过 `channel` 向主进程发送同步消息,也可以发送任意参数.参数会被JSON序列化之后就不会包含函数或原型链.
主进程通过使用 `ipcMain` 模块来监听 `channel`,从而处理消息,
通过 `event.returnValue` 来响应.
__注意:__ 发送同步消息将会阻塞整个渲染进程,除非你知道你在做什么,否则就永远不要用它 .
### `ipcRenderer.sendToHost(channel[, arg1][, arg2][, ...])`
* `channel` String
* `arg` (可选)
类似 `ipcRenderer.send` ,但是它的事件将发往 host page 的 `<webview>` 元素,而不是主进程.

View file

@ -0,0 +1,101 @@
# webFrame
`web-frame` 模块允许你自定义如何渲染当前网页 .
例子,放大当前页到 200%.
```javascript
var webFrame = require('electron').webFrame;
webFrame.setZoomFactor(2);
```
## 方法
`web-frame` 模块有如下方法:
### `webFrame.setZoomFactor(factor)`
* `factor` Number - 缩放参数.
将缩放参数修改为指定的参数值.缩放参数是百分制的,所以 300% = 3.0.
### `webFrame.getZoomFactor()`
返回当前缩放参数值.
### `webFrame.setZoomLevel(level)`
* `level` Number - 缩放水平
将缩放水平修改为指定的水平值. 原始 size 为 0 ,并且每次增长都表示放大 20% 或缩小 20%,默认限制为原始 size 的 300% 到 50% 之间 .
### `webFrame.getZoomLevel()`
返回当前缩放水平值.
### `webFrame.setZoomLevelLimits(minimumLevel, maximumLevel)`
* `minimumLevel` Number
* `maximumLevel` Number
设置缩放水平的最大值和最小值.
### `webFrame.setSpellCheckProvider(language, autoCorrectWord, provider)`
* `language` String
* `autoCorrectWord` Boolean
* `provider` Object
为输入框或文本域设置一个拼写检查 provider .
`provider` 必须是一个对象,它有一个 `spellCheck` 方法,这个方法返回扫过的单词是否拼写正确 .
例子,使用 [node-spellchecker][spellchecker] 作为一个 provider:
```javascript
webFrame.setSpellCheckProvider("en-US", true, {
spellCheck: function(text) {
return !(require('spellchecker').isMisspelled(text));
}
});
```
### `webFrame.registerURLSchemeAsSecure(scheme)`
* `scheme` String
注册 `scheme` 为一个安全的 scheme.
安全的 schemes 不会引发混合内容 warnings.例如, `https`
`data` 是安全的 schemes ,因为它们不能被活跃网络攻击而失效.
### `webFrame.registerURLSchemeAsBypassingCSP(scheme)`
* `scheme` String
忽略当前网页内容的安全策略,直接从 `scheme` 加载.
### `webFrame.registerURLSchemeAsPrivileged(scheme)`
* `scheme` String
通过资源的内容安全策略,注册 `scheme` 为安全的 scheme允许注册 ServiceWorker并且支持 fetch API.
### `webFrame.insertText(text)`
* `text` String
向获得焦点的原色插入内容 .
### `webFrame.executeJavaScript(code[, userGesture])`
* `code` String
* `userGesture` Boolean (可选) - 默认为 `false`.
评估页面代码 .
在浏览器窗口中,一些 HTML APIs ,例如 `requestFullScreen`,只可以通过用户手势来使用.设置`userGesture` 为 `true` 可以突破这个限制 .
[spellchecker]: https://github.com/atom/node-spellchecker