Merge pull request #6685 from electron/document-contents-zoom
Implement and Document the zoom methods that are mapped to the webContents object
This commit is contained in:
commit
56b1abd64a
3 changed files with 60 additions and 5 deletions
|
@ -616,6 +616,36 @@ Mute the audio on the current web page.
|
||||||
|
|
||||||
Returns whether this page has been muted.
|
Returns whether this page has been muted.
|
||||||
|
|
||||||
|
#### `contents.setZoomFactor(factor)`
|
||||||
|
|
||||||
|
* `factor` Number - Zoom factor.
|
||||||
|
|
||||||
|
Changes the zoom factor to the specified factor. Zoom factor is
|
||||||
|
zoom percent divided by 100, so 300% = 3.0.
|
||||||
|
|
||||||
|
#### `contents.getZoomFactor(callback)`
|
||||||
|
|
||||||
|
`callback` is called with the current zoom factor
|
||||||
|
|
||||||
|
#### `contents.setZoomLevel(level)`
|
||||||
|
|
||||||
|
* `level` Number - Zoom level
|
||||||
|
|
||||||
|
Changes the zoom level to the specified level. The original size is 0 and each
|
||||||
|
increment above or below represents zooming 20% larger or smaller to default
|
||||||
|
limits of 300% and 50% of original size, respectively.
|
||||||
|
|
||||||
|
#### `contents.getZoomLevel(callback)`
|
||||||
|
|
||||||
|
`callback` is called with the current zoom level
|
||||||
|
|
||||||
|
#### `contents.setZoomLevelLimits(minimumLevel, maximumLevel)`
|
||||||
|
|
||||||
|
* `minimumLevel` Number
|
||||||
|
* `maximumLevel` Number
|
||||||
|
|
||||||
|
Sets the maximum and minimum zoom level.`
|
||||||
|
|
||||||
#### `contents.undo()`
|
#### `contents.undo()`
|
||||||
|
|
||||||
Executes the editing command `undo` in web page.
|
Executes the editing command `undo` in web page.
|
||||||
|
|
|
@ -89,6 +89,11 @@ const webFrameMethods = [
|
||||||
'setZoomLevelLimits'
|
'setZoomLevelLimits'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
const webFrameMethodsWithResult = [
|
||||||
|
'getZoomFactor',
|
||||||
|
'getZoomLevel'
|
||||||
|
]
|
||||||
|
|
||||||
// Add JavaScript wrappers for WebContents class.
|
// Add JavaScript wrappers for WebContents class.
|
||||||
const wrapWebContents = function (webContents) {
|
const wrapWebContents = function (webContents) {
|
||||||
// webContents is an EventEmitter.
|
// webContents is an EventEmitter.
|
||||||
|
@ -120,6 +125,20 @@ const wrapWebContents = function (webContents) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const asyncWebFrameMethods = function (requestId, method, callback, ...args) {
|
||||||
|
this.send('ELECTRON_INTERNAL_RENDERER_ASYNC_WEB_FRAME_METHOD', requestId, method, args)
|
||||||
|
ipcMain.once(`ELECTRON_INTERNAL_BROWSER_ASYNC_WEB_FRAME_RESPONSE_${requestId}`, function (event, result) {
|
||||||
|
if (callback) callback(result)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const syncWebFrameMethods = function (requestId, method, callback, ...args) {
|
||||||
|
this.send('ELECTRON_INTERNAL_RENDERER_SYNC_WEB_FRAME_METHOD', requestId, method, args)
|
||||||
|
ipcMain.once(`ELECTRON_INTERNAL_BROWSER_SYNC_WEB_FRAME_RESPONSE_${requestId}`, function (event, result) {
|
||||||
|
if (callback) callback(result)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// Mapping webFrame methods.
|
// Mapping webFrame methods.
|
||||||
for (const method of webFrameMethods) {
|
for (const method of webFrameMethods) {
|
||||||
webContents[method] = function (...args) {
|
webContents[method] = function (...args) {
|
||||||
|
@ -127,11 +146,12 @@ const wrapWebContents = function (webContents) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const asyncWebFrameMethods = function (requestId, method, callback, ...args) {
|
for (const method of webFrameMethodsWithResult) {
|
||||||
this.send('ELECTRON_INTERNAL_RENDERER_ASYNC_WEB_FRAME_METHOD', requestId, method, args)
|
webContents[method] = function (...args) {
|
||||||
ipcMain.once(`ELECTRON_INTERNAL_BROWSER_ASYNC_WEB_FRAME_RESPONSE_${requestId}`, function (event, result) {
|
const callback = args[args.length - 1]
|
||||||
if (callback) callback(result)
|
const actualArgs = args.slice(0, args.length - 2)
|
||||||
})
|
syncWebFrameMethods.call(this, getNextId(), method, callback, ...actualArgs)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure webContents.executeJavaScript would run the code only when the
|
// Make sure webContents.executeJavaScript would run the code only when the
|
||||||
|
|
|
@ -32,6 +32,11 @@ electron.ipcRenderer.on('ELECTRON_INTERNAL_RENDERER_WEB_FRAME_METHOD', (event, m
|
||||||
electron.webFrame[method].apply(electron.webFrame, args)
|
electron.webFrame[method].apply(electron.webFrame, args)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
electron.ipcRenderer.on('ELECTRON_INTERNAL_RENDERER_SYNC_WEB_FRAME_METHOD', (event, requestId, method, args) => {
|
||||||
|
const result = electron.webFrame[method].apply(electron.webFrame, args)
|
||||||
|
event.sender.send(`ELECTRON_INTERNAL_BROWSER_SYNC_WEB_FRAME_RESPONSE_${requestId}`, result)
|
||||||
|
})
|
||||||
|
|
||||||
electron.ipcRenderer.on('ELECTRON_INTERNAL_RENDERER_ASYNC_WEB_FRAME_METHOD', (event, requestId, method, args) => {
|
electron.ipcRenderer.on('ELECTRON_INTERNAL_RENDERER_ASYNC_WEB_FRAME_METHOD', (event, requestId, method, args) => {
|
||||||
const responseCallback = function (result) {
|
const responseCallback = function (result) {
|
||||||
event.sender.send(`ELECTRON_INTERNAL_BROWSER_ASYNC_WEB_FRAME_RESPONSE_${requestId}`, result)
|
event.sender.send(`ELECTRON_INTERNAL_BROWSER_ASYNC_WEB_FRAME_RESPONSE_${requestId}`, result)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue