保持窗口隐藏,直到init完成

时间:2016-03-03 20:29:02

标签: javascript electron

我正在创建一个具有重要初始化过程的窗口,我想保持窗口隐藏,直到init完成。现在,在我的js代码的开头,我在创建窗口后立即隐藏窗口,然后在init完成时显示它。但是当窗口出现时,当应用程序启动时,这会产生一个不太令人满意的闪光,消失然后重新出现。

有没有办法在init运行时保持窗口不可见?

3 个答案:

答案 0 :(得分:2)

我最好的猜测是,您需要在页面的head部分使用CSS隐藏应用程序窗口,而无需查看代码。这种方式在浏览器呈现页面之前隐藏。试图用Javascript隐藏窗口不会很好地工作。这是因为脚本无法在浏览器创建窗口之前隐藏窗口。因此,根据条件,用户可能会在启动时看到它闪烁。

下面的代码段显示了如何使用CSS visibility属性执行此操作。或者,您也可以使用display属性。

显示然后运行代码段以尝试。



setTimeout(function() {

  // some long init process here

  // make visible on ready
  window.spinner.style.display = 'none';
  window.app.style.visibility = 'visible';
}, 3000);

#app {
  height: 10em;
  visibility: hidden;
  background-color: white;
}
h3,
h4 {
  margin: 0;
  padding: 4px;
  color: white;
  background-color: steelblue;
}
#spinner {
  height: 100px;
  position: absolute;
}
body {
  background-color: lightgray;
}

<h3>Header</h3>
<div id="content">
  <img id="spinner" src="http://i.stack.imgur.com/kOnzy.gif">
  <div id="app">APPLICATION READY</div>
</div>
<h4>footer</h4>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

首先使用CSS隐藏它。 display:none或visibility:hidden。

然后通过在初始化后更改显示或可见性来使用javascript显示。

答案 2 :(得分:1)

我同意@jeff提供某种进度指标。但是,创建默认情况下在Electron中隐藏的窗口的标准方法是在创建浏览器窗口时使用show选项:

const myWindow = new BrowserWindow({ show: false });

然后,当加载/处理完成后,您可以使窗口可见:

// this code runs in the renderer process
import { remote } from 'electron';

remote.getCurrentWindow().show();