【问题标题】:Electron window.webContents.send doesn't work电子 window.webContents.send 不起作用
【发布时间】:2019-10-08 09:01:49
【问题描述】:

main.js

mainWindow = new BrowserWindow({ show: false, minWidth: 400, minHeight: 400, webPreferences: {nodeIntegration: true} });
mainWindow.maximize();
mainWindow.loadURL(url.format({
    pathname: path.join(__dirname, '/html/index.html'),
    protocol: 'file:',
    slashes: true
}));
mainWindow.on('closed', function(){
    app.quit();
});
const mainMenu = Menu.buildFromTemplate(mainMenuTemplate);
Menu.setApplicationMenu(mainMenu);

mainWindow.once('ready-to-show', () => {
    mainWindow.show();
    const data = {id: 'checking_for_updates', display: 'none'}
    console.log(data)
    mainWindow.webContents.send('change_display', data) 
}) 

index.html

<script>
    const electron = require('electron');
    const ipcRenderer = electron.ipcRenderer;
    ipcRenderer.on('change_display', function (event, data) {
        console.log(data);
        document.getElementById(data.id).style.display=data.display;
    })
</script>
<body>
    <!-- Checking if you can update -->
    <div class="container updating"  id="checking_for_updates" style="display: block">
        <h1 class="updating-text">Checking for updates.</h1>
    </div>

它只记录“数据”一次,因此 ipcRenderer 可能不会运行 ipcRenderer.on change_display 事件。我该如何解决这个问题?

【问题讨论】:

    标签: electron


    【解决方案1】:

    你的代码在这里:

    mainWindow.once('ready-to-show', () => {
        mainWindow.show();
        const data = {id: 'checking_for_updates', display: 'none'}
        console.log(data)
        mainWindow.webContents.send('change_display', data) 
    })
    

    只发送一次change_display。所以你会看到data 也记录了一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      • 2011-05-18
      • 2020-04-02
      • 2016-12-14
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多