2017-05-30 82 views
0

我是Electron的新手,我的目标是在其中运行一个Django应用程序。 Django应用程序已使用PyInstaller编译并正确放置在我的电子项目结构中。电子需要页面重新加载以显示内容

我的问题是,当我开始电子(electron .)它的空白窗口打开。我需要刷新才能显示正确的内容。我无法得到这个工作,使页面重新加载,以显示电子开放期间的内容。我试过reload()reloadIgnoringCache()选项,但它并不能帮助......

分析我的窗口webContents参数我可以看到我的窗口开始变得currentIndex: -1后需要手动重新装入currentIndex: 0(不知道这是相关的...) 。

这里是我的main.js文件的相关部分:

app.on('ready', function() { 
log.info('App is ready?!....'); 

var openWindow = function(mainAddr){ 
    mainWindow = new BrowserWindow({width: 1200, height: 800, backgroundColor: '#eeeeee', show:false}); 
    mainWindow.loadURL(mainAddr); 
    mainWindow.webContents.on('did-finish-load', function() { 
     mainWindow.show(); 

    }); 
    mainWindow.webContents.session.clearCache(function() { 
     console.log("Cache has been cleared."); 
    }); 
    mainWindow.webContents.reloadIgnoringCache(); 
    mainWindow.webContents.openDevTools(); 
    mainWindow.on('closed', function() { 
     mainWindow = null; 
     subpy.kill('SIGINT'); 
    }); 


}; 
+0

嗨,你有没有尝试过“现成秀”事件? –

+0

嗨@AnatolyStrashkevich - 感谢您的建议。我试了一下,结果窗口根本无法打开......所以我甚至无法点击刷新按钮.. – user1544500

回答

0

好了 - 原来,这个问题是与我的Django的服务器是如何开始的方式......它需要几秒钟就可以上手,当时Electron试图达成目标并没有成功,因此白屏。

引进超时定时器后,像这样:

setTimeout(function() { 
       console.log('waiting ....'); 
       mainWindow.loadURL(mainAddr); 
    },4000); 

等待那些4秒钟后问题就“走了” ......

+1

您确定启动服务器始终是4秒吗?也许更好的主意将是建立与服务器的套接字连接和服务器负载设置回调? –

+0

非常好的评论 - 谢谢你!我去做! – user1544500

相关问题