webveiw 拿到js返回的值_如何从电子中的webview.executeJavaScript获取返回值

不完全确定为什么要求将JS代码注入WebView,但为什么不…确保它不是

XY problem.

> webview.executeJavascript()方法不返回任何内容.您可以将回调作为第三个参数传递(下面有更多内容),但我认为它不会从执行的代码中收到任何内容.

>在注入的代码中,您将创建一个将在页面就绪时执行的回调.因此,函数返回的任何内容(如url变量)都不会受到回调代码的影响.确保你理解How to return the response from an asynchronous call?

如果我理解正确,您将尝试废弃嵌入页面上的某些数据,并将其发送回渲染器(浏览器).

实现此结果的更合适的方法是使用电子< webview>的preload属性:

在inject.js中,您可以要求(电子),并使用电子IPC方案(electron.ipcRenderer)在Webview(ipcRendrer.sendToHost())和“父”渲染器之间进行通信.你有一个简单的例子:https://electron.atom.io/docs/api/webview-tag/#event-ipc-message

// In embedder page. (parent Renderer / browser.js)

const webview = document.querySelector('webview')

webview.addEventListener('ipc-message', (event) => {

console.log(event.channel)

// Prints "pong"

})

webview.send('ping')

// In guest page. (preload script for the webview / inject.js)

const {ipcRenderer} = require('electron')

ipcRenderer.on('ping', () => {

ipcRenderer.sendToHost('pong')

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值