我已经成功地将一条消息从React发送到了WebView。
我正在苦苦挣扎的是,将消息从WebView返回给RN。没有出现错误--只是这条信息从来没有传达过。
下面是我使用的代码:
反应本机代码
<WebView
ref={webview => (this.webview = webview)}
source={{ uri: "http://www.my-web-site"}}
onLoadEnd={() => this.onLoadEnd()}
onMessage={this.onMessage}
cacheEnabled={false}
originWhitelist={['*']}
javaScriptEnabled={true}
/>
onLoadEnd() {
this.webview.postMessage("RN message");
}
onMessage(message) {
console.log("I can’t see this message!");
}
WebView码
document.addEventListener("message", function (event) {
setTimeout(function(){document.postMessage("WebView message")}, 3000);
}, false);
发布于 2019-06-24 06:29:43
请确保每个接收者的数据都在其中,并使用所需的数据。
并且始终检查指定的文档,看看如何在使用参数和语法之前使用它们。
RN
onLoadEnd() {
this.webview.postMessage("sendmessage");
}
onMessage(event) {
alert(event.nativeEvent.data);
}
WebView码
document.addEventListener("message", function (event) {
window.postMessage(event.data);
});
React原生版本5.0或更高版本的
window.ReactNativeWebView.postMessage(event.data);
发布于 2019-06-24 14:05:18
哦,终于,我终于找到了答案。这是我最初尝试使用的一行代码,用于从RN向WebView发送消息。原来,这是从WebView发送到RN所需的代码:
WebView码
document.addEventListener("message", function (event) {
window.ReactNativeWebView.postMessage(event.data);
}, false);
RN码
<WebView onMessage={event => console.log(event.nativeEvent.data)} />
发布于 2021-12-12 06:19:13
这个很管用。
反应本机
<WebView source={{ ... }}
containerStyle={{ ... }}
onMessage={ e => { console.log(e.nativeEvent.data) } }
/>
WebView
if(window.ReactNativeWebView) {
// send data object to React Native (only string)
window.ReactNativeWebView.postMessage(JSON.stringify(dataObject))
}
https://stackoverflow.com/questions/56737292
复制相似问题