Electron - 从渲染器进程调整大小 Window
Electron - Resize Window from renderer process
我正在开发一个 Electron 应用程序,作为界面的一部分,我想在发生某些事情后增加 window 的大小(我现在已将其绑定到一个按钮)以便我可以显示附加数据。我尝试使用以下在 onclick=resize()
:
上激活的代码来执行此操作
require('./renderer.js');
let remote = require('electron').remote;
function resize() {
let win = remote.getCurrentWindow().setBounds({
height: 1000
});
}
但是,我在 window/browser 控制台中收到以下错误:
Uncaught Error: Could not call remote function 'setBounds'. Check that the function signature is correct. Underlying error: Error processing argument at index 0, conversion failure from #<Object>
Error: Could not call remote function 'setBounds'. Check that the function signature is correct. Underlying error: Error processing argument at index 0, conversion failure from #<Object>
at callFunction (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\browser\rpc-server.js:257:11)
at EventEmitter.<anonymous> (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\browser\rpc-server.js:357:5)
at emitMany (events.js:127:13)
at EventEmitter.emit (events.js:204:7)
at WebContents.<anonymous> (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\browser\api\web-contents.js:256:13)
at emitTwo (events.js:106:13)
at WebContents.emit (events.js:194:7)
at callFunction (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\browser\rpc-server.js:257:11)
at EventEmitter.<anonymous> (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\browser\rpc-server.js:357:5)
at emitMany (events.js:127:13)
at EventEmitter.emit (events.js:204:7)
at WebContents.<anonymous> (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\browser\api\web-contents.js:256:13)
at emitTwo (events.js:106:13)
at WebContents.emit (events.js:194:7)
at metaToValue (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\renderer\api\remote.js:234:13)
at Object.remoteMemberFunction (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\renderer\api\remote.js:118:18)
at resize (file:///D:/Documents/Development/Projects/ShortenMeURL/V1/index.html:41:45)
at HTMLButtonElement.onclick (file:///D:/Documents/Development/Projects/ShortenMeURL/V1/index.html:22:86)
关于如何解决这个问题有什么建议吗?
只需使用渲染器中的普通旧 javascript,如果只是调整大小,我不会在主进程和渲染器进程之间添加不必要的消息 ;)
window.resizeTo(1000,900);
Rectangle
object (which is the first argument of setBounds
) 的定义比您预期的要严格。由于它的属性没有默认值,因此您必须定义所有这些属性。
例如:
remote.getCurrentWindow().setBounds({
x: 1621,
y: 611,
width: 10,
height: 1000
});
此外,如果您只想调整大小,可以使用 setSize
的 BrowserWindow
如果有人遇到类似错误,请确保提供整数值,例如 123
,而不是 123,45
。 Math.round
他们来确认一下。
遗憾的是我没有在文档中看到这一点。
我正在开发一个 Electron 应用程序,作为界面的一部分,我想在发生某些事情后增加 window 的大小(我现在已将其绑定到一个按钮)以便我可以显示附加数据。我尝试使用以下在 onclick=resize()
:
require('./renderer.js');
let remote = require('electron').remote;
function resize() {
let win = remote.getCurrentWindow().setBounds({
height: 1000
});
}
但是,我在 window/browser 控制台中收到以下错误:
Uncaught Error: Could not call remote function 'setBounds'. Check that the function signature is correct. Underlying error: Error processing argument at index 0, conversion failure from #<Object>
Error: Could not call remote function 'setBounds'. Check that the function signature is correct. Underlying error: Error processing argument at index 0, conversion failure from #<Object>
at callFunction (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\browser\rpc-server.js:257:11)
at EventEmitter.<anonymous> (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\browser\rpc-server.js:357:5)
at emitMany (events.js:127:13)
at EventEmitter.emit (events.js:204:7)
at WebContents.<anonymous> (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\browser\api\web-contents.js:256:13)
at emitTwo (events.js:106:13)
at WebContents.emit (events.js:194:7)
at callFunction (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\browser\rpc-server.js:257:11)
at EventEmitter.<anonymous> (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\browser\rpc-server.js:357:5)
at emitMany (events.js:127:13)
at EventEmitter.emit (events.js:204:7)
at WebContents.<anonymous> (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\browser\api\web-contents.js:256:13)
at emitTwo (events.js:106:13)
at WebContents.emit (events.js:194:7)
at metaToValue (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\renderer\api\remote.js:234:13)
at Object.remoteMemberFunction (C:\Users\Thomas\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\renderer\api\remote.js:118:18)
at resize (file:///D:/Documents/Development/Projects/ShortenMeURL/V1/index.html:41:45)
at HTMLButtonElement.onclick (file:///D:/Documents/Development/Projects/ShortenMeURL/V1/index.html:22:86)
关于如何解决这个问题有什么建议吗?
只需使用渲染器中的普通旧 javascript,如果只是调整大小,我不会在主进程和渲染器进程之间添加不必要的消息 ;)
window.resizeTo(1000,900);
Rectangle
object (which is the first argument of setBounds
) 的定义比您预期的要严格。由于它的属性没有默认值,因此您必须定义所有这些属性。
例如:
remote.getCurrentWindow().setBounds({
x: 1621,
y: 611,
width: 10,
height: 1000
});
此外,如果您只想调整大小,可以使用 setSize
的 BrowserWindow
如果有人遇到类似错误,请确保提供整数值,例如 123
,而不是 123,45
。 Math.round
他们来确认一下。
遗憾的是我没有在文档中看到这一点。