如何在 Election 中的 Main.js 和 html.js 之间发送和获取数据

Posted

技术标签:

【中文标题】如何在 Election 中的 Main.js 和 html.js 之间发送和获取数据【英文标题】:How can send and get data beteen Main.js and html.js in Election 【发布时间】:2021-11-05 05:23:09 【问题描述】:

如何在 Electron 中使用ipcRenderer 发送数据? 我使用此代码,但效果不佳。我无法将数据从 ma​​in.js 发送到 notes2 到 index.html

在 Main.js 中

   ipcMain.on('notes', function(event, data) 
      console.log('notes: ', data)
      win.webContents.send('notes2', "dddddddddddddd");
   );

【问题讨论】:

【参考方案1】:

Main.js

const  app, BrowserWindow, ipcMain  = require('electron');
const url = require('url')
const path = require('path')
let mainWindow;
/**
 * Create a new window
 */
const createWindow = () => 
   mainWindow = new BrowserWindow(
    webPreferences: 
      /** Enable node integration */
      nodeIntegration: true
    
  );

  /** Open devTools */
  mainWindow.webContents.openDevTools();

  /** Load the index.html page */
     mainWindow.loadURL(url.format (
      pathname: path.join(__dirname, 'index.html'),
      protocol: 'file:',
      slashes: true
   ))
;

/**
 * Initialize the application
 */
 
const init = () => 
  /** Create app window */
  createWindow();

  /** Define channel name and message */
  const CHANNEL_NAME = 'main';
  const MESSAGE = 'tick';
    ipcMain.on(CHANNEL_NAME, (event, data) => 
    /** Show the request data */
    console.log(data);
      mainWindow.webContents.send(CHANNEL_NAME, "hhhhhhhhhhhhhhhh");
    /** Send a response for a synchronous request */
    event.returnValue = 'pong';
  );
  /** Send message every one second */
  
  setInterval(() => 
    mainWindow.webContents.send('another', MESSAGE);
  , 1000);
  

  
;

/**
 * Run the app
 */
app.on('ready', init);

index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>IPC test app</title>

    <script>
        const  ipcRenderer  = require('electron');

        /** Define channel name */
        const CHANNEL_NAME = 'main';

        /** Create a processor for a button's click event */
        const clickButton = () => 
          /** Message to be sent */
          let message = 'ping';

          /** Show response for a sync IPC request */
          console.log(ipcRenderer.sendSync(CHANNEL_NAME, message));
        
        
        
    /** Add IPC event listener */
      ipcRenderer.on(CHANNEL_NAME, (event, data) =>    
        console.log('hiiiiiiii ' , data);
      );
      
        /** Add IPC event listener */
      ipcRenderer.on('another', (event, data) =>   
        console.log('hello  : ' , data);
      );
      
      
    </script>
</head>
<body>
    <button onclick="clickButton()">Press me</button>
</body>
</html>

【讨论】:

以上是关于如何在 Election 中的 Main.js 和 html.js 之间发送和获取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vuejs 的 main.js 中使用 Mixin?

vue中如何将main.js中数据传给html

如何在多页 vue 应用程序中的页面之间传输状态?

将变量从main.js暴露给vue-cli项目中的其他脚本

如何在vue-cli上更改main.js的路径?

在 ng build --prod 之后,为啥我在 main.js:1 和 polyfills.js:1 中出现错误,而不是在我创建的组件中,如何撤消这个?