如何根据电子窗口内部HTML元素的宽度调整电子窗口的宽度?

时间:2017-05-18 06:20:52

标签: javascript node.js electron

我在电子窗口的HTML中有一个元素,我不知道元素的宽度。如何将BrowserWindow中创建的电子main.js的最小宽度设置为等于所述HTML元素的宽度?

我尝试在element.offsetWidth文件中使用index.html来获取元素的宽度,然后在同一个文件中使用下面的代码来设置窗口的最小大小,但是大小最终以某种方式关闭。我不知道为什么。从某些控制台输出来看,它应该正常工作。

var remote = require('electron').remote;
var win = remote.getCurrentWindow();
win.setMinimumSize(elementWidth, 400);

我的猜测是我的屏幕像素与CSS像素的大小不同,但我不太确定。是否有更好的方法完全做到这一点,还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

听起来像窗口边框(例如滚动条)没有被考虑在内。您可以先设置所需的尺寸,然后读取您的实际尺寸并将尺寸更新为您想要的尺寸加上您检测到的差异,从而将这些考虑在内。

// get elementWidth in some way
var remote = require('electron').remote,
    win = remote.getCurrentWindow();
win.setMinimumSize(elementWidth, 400);
// check size, update window width
var contentWidth = window.innerWidth;
if (contentWidth !== elementWidth) {
  win.setMinimumSize(2 * elementWidth - contentWidth, 400);
}

或者,您可以直接使用win.setContentSize方法,这应该达到您想要的效果(尽管它没有强制实施最小尺寸,显然......

// get elementWidth in some way
var remote = require('electron').remote,
    win = remote.getCurrentWindow();
win.setContentSize(elementWidth, 400);