gpt4 book ai didi

reactjs - 如何在 React Native webview 中使用 PostMessage?

转载 作者:行者123 更新时间:2023-12-04 12:32:07 33 4
gpt4 key购买 nike

我正在尝试将 postmessage 用于在 React Native App 内的 webview 中打开的页面。我试了很多次,还是无法发送。
我可以正常收听网页消息。我只是无法寄回任何东西。
我目前正在使用 react-native-webview 11.6.5

export default function WebPage() {
const webviewRef = useRef();

const onMessage = (event) => {
//receive message from the web page. working here until here
const data = JSON.parse(event.nativeEvent.data);

//reply the message
webviewRef.current.postMessage(
JSON.stringify({reply: 'reply'}),
'*'
)
}

return <View>
<WebView
ref={webviewRef}
originWhitelist={['*']}
source={{ uri: 'https://robertnyman.com/html5/postMessage/postMessage.html' }}
domStorageEnabled
javaScriptEnabled
onMessage={onMessage}
/>
</View>


}
任何想法我做错了什么?
更新:
感谢@Ahmed Gaber 的帮助,我找到了这个问题 https://github.com/react-native-webview/react-native-webview/issues/809并发现他们正在改变 postMessageinjectJavaScript .
所以我更新了我的代码 onMessage到以下几点:
const onMessage = (event) => {
const data = JSON.parse(event.nativeEvent.data);

//reply the message
webviewRef.current.injectJavaScript(
`window.postMessage(
{
reply: 'reply'
}
);`
)
}

最佳答案

将数据从应用程序发送到 webview使用 injectedJavaScript
webview 发送数据应用程序使用 postMessage
webview 中接收数据数据由 postMessage 发送使用 onMessage

//this Js function will be injected into the web page after the document finishes loading.
//this function will Post a message to WebView.
const INJECTED_JAVASCRIPT = `(function() {
window.ReactNativeWebView.postMessage(JSON.stringify({key : "value"}));
})();`;



<WebView
source={{ uri: 'https://reactnative.dev' }}
injectedJavaScript={INJECTED_JAVASCRIPT}
onMessage={(event) => {
const data = JSON.parse(event.nativeEvent.data);
alert(data.key);
}}
/>;

关于reactjs - 如何在 React Native webview 中使用 PostMessage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68334181/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com