tsepen
@tsepen
Frontend developer

Как отправить сообщение в iframe в webview?

Есть Webview компонент
<WebView
          ref={webView => (this.webView = webView)}
          originWhitelist={['*']}
          source={{
            html: `<iFrame id="payture-iframe" name="paytureIframe" width="100%" height="450px" src=${this.props.url} frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iFrame>`,
          }}
          onMessage={this.onMessageHandler}
          style={{ flex: 1, width: '100%', height: '100%' }}
        />


Есть объект с методом postMessage, отправляю через него сообщение, но frame его не видит

Отправляю сообщение
this.webView.postMessage(JSON.stringify({ type: 'sendOrder' }), '*');
  • Вопрос задан
  • 206 просмотров
Пригласить эксперта
Ответы на вопрос 1
RomReed
@RomReed
JavaScript, Flutter, ReactNative, Redux, Firebase
Есть 1 спрособ передать данные в webview. Для этого вам нужно вызвать функцию вот таким образом
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>WebView1</title>
<meta forua="true" http-equiv="Cache-Control" content="max-age=0"/>
</head>
<script type="text/javascript">
function testEcho(test){
  alert(test);
}
</script>
</body>
</html>


return this.webview&&this.webview.injectJavaScript("testEcho("+JSON.stringify({...result,token:this.state.accessToken})+");")


функция testEcho обязательно должна быть в iFrame
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы