电子:如何与浏览器窗口通信?

Ric*_*ich 1 javascript electron

在Electron中,我有以下脚本是my main.js,它是还原窗口并对其进行聚焦的快捷方式,但是我想将输入聚焦在窗口内部。我该如何实现?

main.js

app.on('ready', function(){
  createWindow();
  var ret = globalShortcut.register('Command+Control+Alt+G', function() {
    mainWindow.restore();
    mainWindow.focus();
    $('.js-search').focus();
  });
})
Run Code Online (Sandbox Code Playgroud)

Mat*_*son 5

您可以使用webContents将消息从主进程发送到渲染器进程在页面集中时。

页面(渲染器进程)可以侦听该消息,然后集中元素本身。

主要过程

globalShortcut.register('Command+Control+Alt+G', function() {

    win.restore();
    win.focus();
    win.webContents.send('focus-element', '.js-search');
});
Run Code Online (Sandbox Code Playgroud)

渲染器过程(页面)

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

    ipcRenderer.on('focus-element', (event, selector) => {
        document.querySelector(selector).focus();
    });
</script>
Run Code Online (Sandbox Code Playgroud)