私はWebViewとアプリケーションのRNレイヤーからデータを取得しようとしていますが、WebViewから受け取った応答はイベントオブジェクトのように見えますが、 WebViewからオブジェクトの任意の場所に送信されます。WebView onMessageが予期しない応答を返す
応答は次のようになります。
奇妙な行動の上記目的の結果、および構造の変更をクリックするProxy { dispatchConfig: Object, _targetInst: Constructor, isDefaultPrevented: function, isPropagationStopped: function, _dispatchListeners: function...}
。
{
[[Handler]]: Object,
[[Target]]: SyntheticEvent,
[[IsRevoked]]: false
}
そして私は、私は戻ってRNに送信されるようにハードコードしました文字列を見つけることができません上記のような奇妙な出来事に見えるオブジェクトの内部:一度開いてクリック、上記の目的は次のようになります。
アイデア?
ここで私はWebViewのに渡すコードです:
var defer = function (fn, delay) {
if (!fn || typeof fn !== 'function') return console.log('defer: First argument must be a function.');
if (!delay) delay = 0;
return setTimeout(fn, delay);
};
var initBridge = function() {
try {
if (!window.postMessage) {
console.log('Could not initiate WebView bridge');
}
defer(function() { window.postMessage('HELLO'); }, 500);
let sentTest = false
document.addEventListener('message', function (data) {
console.log('Received message from RN!');
console.log(data);
});
console.log('WebView bridge successfully initialised');
} catch (err) {
console.log(window.postMessage);
console.log('Failed to initiate WebView bridge');
console.log('Error: ', err);
}
};
defer(initBridge);
そして、これが私のonMessage
ハンドラである:あなたがすることができます、あなたはWebViewのから受け取ったメッセージにmessage.persist()
を呼び出す場合
_onMessage (message) {
console.log('MESSAGE FROM WEBVIEW: ', message)
console.log('ARGS: ', arguments)
this._webView.postMessage('Hello, from RN!')
}
'message.nativeEvent.data'は私のトリックでした。最初に 'message.persist()'を呼び出す必要がありますか? – kuhr