【发布时间】:2021-09-20 20:12:11
【问题描述】:
我正在尝试将 postmessage 用于在 React Native 应用程序内的 web 视图中打开的页面。试了很多次还是发不出去。
我可以正常收听来自网页的消息。我就是不能发回任何东西。
我目前正在使用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 并发现他们正在将postMessage 更改为injectJavaScript。
所以我将代码onMessage 更新为以下内容:
const onMessage = (event) => {
const data = JSON.parse(event.nativeEvent.data);
//reply the message
webviewRef.current.injectJavaScript(
`window.postMessage(
{
reply: 'reply'
}
);`
)
}
【问题讨论】:
标签: reactjs react-native webview react-native-web react-native-webview