2017-12-03 7 views
0

私はonMessageリスナを使用しようとしています。ウェブサイトはpostMessage(window.postMessage("Post message from web");)を実行していますが、ネイティブのwebview onMessageリスナーは何もしていません!私は何が間違っているのか分からない。ここでReact Native WebView onMessageは何もしません

はHTML

<script type="text/javascript"> 
    window.postMessage("Post message from web"); 
</script> 

であり、ここで反応し、ネイティブコードです:

ネイティブ関数を反応させるのonMessage
<WebView 
    ref={(webView) => this.webView = webView} 
    onMessage={this.onMessage} 
    source={{uri: 'https://app.sodge.co/login/response.html'}} 
    /> 

:ここ

onMessage(event) { 
    Alert.alert(
    'On Message', 
    event.nativeEvent.data, 
    [ 
     {text: 'OK'}, 
    ], 
    { cancelable: true } 
) 
} 

も万博のスナックです。 ..私は間違っていることを知らない(:... https://snack.expo.io/S17AQqWbf

答えて

1

this issueによると、あなたが反応ネイティブpostMessageまで待つ必要があるが(はなぜ彼らはネイティブ関数を置き換える代わりに、新しいものを作成している私に聞かないでください)ネイティブwindow.postMessageを交換しました。

function waitForBridge() { 

    //the react native postMessage has only 1 parameter 
    //while the default one has 2, so check the signature 
    //of the function 

    if (window.postMessage.length !== 1){ 
    setTimeout(waitForBridge, 200); 
    } 
    else { 
    window.postMessage('abc'); 
    } 
} 

window.onload = waitForBridge; 
+0

ありがとう:

一つの解決策のような何かを行うことです!完璧に今働いている – QUIQUELHAPPY

関連する問題