【问题标题】:Electron - Resize Window from renderer processElectron - 从渲染器进程调整窗口大小
【发布时间】:2017-12-03 22:57:32
【问题描述】:

我正在开发一个 Electron 应用程序,作为界面的一部分,我想在发生某些事情后增加窗口的大小(我现在已将其绑定到一个按钮),以便显示其他数据。我尝试使用在onclick=resize() 上激活的以下代码来执行此操作:

require('./renderer.js');

let remote = require('electron').remote;
function resize() {
    let win = remote.getCurrentWindow().setBounds({
        height: 1000
    });
}

但是,我在窗口/浏览器控制台中收到以下错误:

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)

关于如何解决此问题的任何建议?

【问题讨论】:

  • 您是否尝试过为矩形对象提供所有道具? Docs 没有将任何道具标记为可选。你试过setSize(w, h)吗?
  • @pergy 成功了,谢谢。您想将其发布为答案,以便我可以给您代表等。
  • 很高兴听到! ;) 将其发布为答案!

标签: javascript resize electron


【解决方案1】:

Rectangle 对象(setBounds 的第一个参数)的定义比您预期的要严格。由于它的属性没有默认值,因此您必须定义所有属性。

例如:

remote.getCurrentWindow().setBounds({
    x: 1621,
    y: 611,
    width: 10,
    height: 1000
});

另外,如果你只想调整大小,可以使用 BrowserWindow 的setSize

【讨论】:

    【解决方案2】:

    只需使用渲染器中的普通旧 javascript,如果只是调整大小,我不会在主进程和渲染器进程之间添加不必要的消息;)

    window.resizeTo(1000,900);
    

    【讨论】:

    • 知道如何让电子浏览器窗口响应内容吗?
    • MutationObserver 在 body 元素上然后 resizeTo @oldboy
    【解决方案3】:

    如果有人遇到类似错误,请确保提供整数值,例如 123,而不是 123,45Math.round他们确保。

    遗憾的是,我在文档中没有看到提及这一点。

    【讨论】:

      猜你喜欢
      • 2016-10-08
      • 2012-12-20
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      相关资源
      最近更新 更多