You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在本地浏览器中动态展示Electron BrowserWindow的内容?

问题解决记录与实现说明

编辑说明: 我已解决问题,之前发送receive-chunk IPC消息时用错了BrowserWindow,且需为webReader.html创建两个独立脚本,分别用于Electron环境和浏览器环境。

我的Electron应用主BrowserWindow里有一个<textarea />,想要把这个元素的内容同步展示到本地的真实浏览器窗口中,而且用户在<textarea />输入新文本时,浏览器里的内容要实时更新。我尝试用HTTP服务器+WebSocket来实现,但不知道怎么在浏览器里展示我的Electron HTML页面。

现有实现流程

每当用户输入一个新词,我会把这个词发送到主进程,主进程通过以下处理器转发到次级渲染进程:

ipcMain.on('send-chunk', async (_event, data) => {
    console.log('data from main renderer:', data)
    mainWindow.webContents.send('receive-chunk', data)
  })

次级渲染进程代码

const { ipcRenderer } = require('electron')
const WebSocket = require('ws')

const webReaderDisplay = document.getElementById('web-reader-display')
const webReaderContents = []

const ws = new WebSocket('ws://localhost:8080')

ws.onopen = function (event) {
  console.log('WebSocket connection opened:', event)
}

ws.onmessage = function (event) {
  console.log('renderer received: %s', event.data)
  webReaderContents.push(event.data)
  webReaderDisplay.textContent = webReaderContents.join(' ')
}

ws.onerror = function (event) {
  console.error('WebSocket error observed:', event)
}

ws.onclose = function (event) {
  console.log('WebSocket connection closed:', event)
}

ipcRenderer.on('receive-chunk', (_event, data) => {
  ws.send(data)
})

服务器代码

const Server = require('http')
const { WebSocketServer } = require('ws')

const server = Server.createServer((req, res) => {
  res.writeHead(200)
  res.end('hello world')
})

const wss = new WebSocketServer({ server })

wss.on('connection', ws => {
  console.log('Client connected')

  ws.on('message', message => {
    console.log('received: %s', message)
  })

  ws.on('close', () => {
    console.log('Client disconnected')
  })
})

server.listen(8080)

HTML文件代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <link href="../dist/output.css" rel="stylesheet" />
  </head>
  <body>
    <header class="text-center text-system-platinum bg-system-gray-dark">
      <h3>实时转录</h3>
    </header>
    <section class="bg-system-platinum">
      <div class="border-system-gray-dark indent-4">
        <p class="text-system-gray-dark" id="web-reader-display">
          文本将显示在这里
        </p>
      </div>
    </section>
    <script src="webReaderRenderer.js"></script>
  </body>
</html>

内容的提问来源于stack exchange,提问作者nookworth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 14:14:59