2017-05-30 83 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

相關問題