React Native webviewを使ってindex.html
を表示すると、HTMLがアプリに送信されます。アプリはメッセージを受信してコンソールに書き出します。問題は、postMessage
が直ちにヘッドで実行されたときに、アプリケーションがメッセージを受信できないことです。私は多分それがHTMLに終わったロードに関連していると思う。私はsetTimeout
で遅延を使用し、それは働いた。反応しないネイティブhtml postMessageはWebViewに届きません
今、私が知りたい:
- は、この問題を解決するためのより良い方法はありますか?
- 遅延が100ミリオンでは機能しませんでしたが、遅延が200ミリ秒でしたか?
私はReact Nativeバージョン0.39.0とNodeバージョン7.2.0を使用しています。ここで
は私が持っているコードは、これまでです:
// can not be received
postMessage('send to react native from index.js, no delay', '*');
// can not be received
setTimeout(function() {
postMessage('send to react native from index.js, delay 100 milliscond', '*')
}, 100);
// can received
setTimeout(function() {
postMessage('send to react native from index.js, delay 200 milliscond', '*')
}, 200);
がネイティブweb_view_page.js
に反応index.htmlを
<head>
<title>Index</title>
<script type="text/javascript" src="index.js"></script>
<script type="text/javascript">
// can not be received
postMessage('send to react native from index inline, no delay', '*');
// can not be received
setTimeout(function(){
postMessage('send to react native from index inline, delay 0 milliscond', '*')
}, 0);
// can received
setTimeout(function(){
postMessage('send to react native from index inline, delay 100 milliscond', '*')
}, 100);
onload = function() {
// can not be received
postMessage('send to react native from index inline after onload, no delay', '*')
// can received
setTimeout(function() {
postMessage('send to react native from index inline after onload, delay 0 milliscond', '*')
}, 0);
};
</script>
index.js 10
クロームコンソールログ
2016-12-21 11:45:02.367 web_view.js:147 onMessage: send to react native from index inline after onload, delay 0 milliscond
2016-12-21 11:45:02.491 web_view.js:147 onMessage: send to react native from index inline, delay 100 milliscond
2016-12-21 11:45:02.628 web_view.js:147 onMessage: send to react native from index.js, delay 200 milliscond