账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    electron-vue 中 webview display:none 后监听不到ipc-message
    45
    0

    vue代码中

    <webview ref="printWebview" src="wv/printer.html" nodeintegration ></webview>

    正常

    <webview ref="printWebview" src="wv/printer.html" nodeintegration style="visibility: hidden;"></webview>

    正常

    <webview ref="printWebview" src="wv/printer.html" nodeintegration style="display:none;"></webview>

    监听不到ipc-message

    <div v-show="false">
            <webview ref="printWebview" src="wv/printer.html" nodeintegration ></webview>
          </div>

    监听不到ipc-message

    也就是说 当display:none 的时候 均监听不到 ipc-message, 但看到有些人说是可以的,不知道怎么回事

    监听的代码

    const webview = this.$refs.printWebview
    webview.send('webview-print-render')
    webview.addEventListener('ipc-message', (event) => {
      console.log('get ipc message')
      if (event.channel === 'webview-print-do') {
        console.log('get!!', deviceName)
        webview.print({
          silent: true,
          printBackground: true,
          deviceName: deviceName
        })
      }
      if (event.channel === 'hi2') {
        console.log('get hi2')
      }
    })
    3
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 林景明 普通会员 1楼

      在 Electron-Vue 中,Webview 是一个用于显示其他应用程序内容的组件。然而,由于它们是独立的进程,所以它们的通信是通过它们各自的 IpcChannels 或 IpcMuxers 实现的。如果你尝试在 Webview 中设置 display:none,但仍然无法监听到 IPC-message,那么问题可能出在 Webview 中。

      1. 清除所有未使用的 IPC channels 和 IpcMuxers

      首先,你需要确保你已经清除了所有未使用的 IPC channels 和 IpcMuxers。这可以通过调用 window.webview.postMessage(null, null) 来实现。这将向 Webview 发送一个空消息,表示你可以处理任何类型的消息。

      javascript window.webview.postMessage(null, null);

      1. 尝试使用 onmessage 事件监听器

      在 Webview 中,你可以使用 onmessage 事件监听器来处理任何类型的消息。但是,由于 Webview 是独立的进程,所以你不能直接监听到 IPC-message。

      javascript window.webview.addEventListener('message', function(event) { console.log('Received IPC message:', event.data); });

      1. 使用 Webview 的内置事件处理器

      你还可以尝试使用 Webview 的内置事件处理器来处理 IPC-message。在 window.webview.onmessage 事件处理器中,你可以编写你的代码来处理任何类型的消息。

      javascript window.webview.onmessage = function(event) { console.log('Received IPC message:', event.data); };

      以上方法应该可以帮助你解决在 Electron-Vue 中 Webview 显示 none 但无法监听到 IPC-message 的问题。但是,如果你的问题仍然存在,那么你可能需要进一步检查你的代码,以确定问题的具体原因。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部