React Native WebView onMessage doesn`t work
My companent
import React, {Component} from 'react';
import {WebView} from 'react-native';
class Html extends Component {
constructor(props){
super(props);
this.webView = null;
}
onMessage( event ) {
console.log( "On Message", event.nativeEvent.data );
}
sendPostMessage(msg) {
console.log( "Sending post message",msg );
this.webView.postMessage(JSON.stringify(msg));
}
runJSInBackground (code) {
this.webView.injectJavaScript(code)
}
render() {
return (
<WebView
originWhitelist={['*']}
ref={( webView ) => this.webView = webView}
onMessage={this.onMessage}
onError={(e)=>console.log("WebView error: "+e)}
source={{
baseUrl:"include/",
html: `
<html>
<head>
</head>
<body>
<script>
document.addEventListener("message",function(event) {
console.log("Received post message", event); //Work!!!
}, false);
setTimeout(()=>window.postMessage("WhatsAppMANNN!!!"),5000) //doesn`t work ((
</script>
</body>
</html>
` }}
/>
)
}
}
export default Html;
Everything works fine when I send a WebView request, but there is no answer to the return. That is, the window.postMessage method does not work, and the error does not light either. What's the catch, not how I can not find the answer to this question.
react-native
add a comment |
My companent
import React, {Component} from 'react';
import {WebView} from 'react-native';
class Html extends Component {
constructor(props){
super(props);
this.webView = null;
}
onMessage( event ) {
console.log( "On Message", event.nativeEvent.data );
}
sendPostMessage(msg) {
console.log( "Sending post message",msg );
this.webView.postMessage(JSON.stringify(msg));
}
runJSInBackground (code) {
this.webView.injectJavaScript(code)
}
render() {
return (
<WebView
originWhitelist={['*']}
ref={( webView ) => this.webView = webView}
onMessage={this.onMessage}
onError={(e)=>console.log("WebView error: "+e)}
source={{
baseUrl:"include/",
html: `
<html>
<head>
</head>
<body>
<script>
document.addEventListener("message",function(event) {
console.log("Received post message", event); //Work!!!
}, false);
setTimeout(()=>window.postMessage("WhatsAppMANNN!!!"),5000) //doesn`t work ((
</script>
</body>
</html>
` }}
/>
)
}
}
export default Html;
Everything works fine when I send a WebView request, but there is no answer to the return. That is, the window.postMessage method does not work, and the error does not light either. What's the catch, not how I can not find the answer to this question.
react-native
Try with webView.postMessage("WhatsAppMANNN!!!"),5000)
– Anurag Chutani
Nov 21 '18 at 7:02
Does not help, tried and wait for the bridge function waitForBridge() { if (window.postMessage.length !== 1) setTimeout(waitForBridge, 200); else window.postMessage('abcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'); } window.onload = waitForBridge;
– Владимир Аристархов
Nov 21 '18 at 7:23
waiting for the bridge with window.postMessage.length === 1 does not work since chrome 70
– Ulysse Mizrahi
Jan 22 at 17:38
add a comment |
My companent
import React, {Component} from 'react';
import {WebView} from 'react-native';
class Html extends Component {
constructor(props){
super(props);
this.webView = null;
}
onMessage( event ) {
console.log( "On Message", event.nativeEvent.data );
}
sendPostMessage(msg) {
console.log( "Sending post message",msg );
this.webView.postMessage(JSON.stringify(msg));
}
runJSInBackground (code) {
this.webView.injectJavaScript(code)
}
render() {
return (
<WebView
originWhitelist={['*']}
ref={( webView ) => this.webView = webView}
onMessage={this.onMessage}
onError={(e)=>console.log("WebView error: "+e)}
source={{
baseUrl:"include/",
html: `
<html>
<head>
</head>
<body>
<script>
document.addEventListener("message",function(event) {
console.log("Received post message", event); //Work!!!
}, false);
setTimeout(()=>window.postMessage("WhatsAppMANNN!!!"),5000) //doesn`t work ((
</script>
</body>
</html>
` }}
/>
)
}
}
export default Html;
Everything works fine when I send a WebView request, but there is no answer to the return. That is, the window.postMessage method does not work, and the error does not light either. What's the catch, not how I can not find the answer to this question.
react-native
My companent
import React, {Component} from 'react';
import {WebView} from 'react-native';
class Html extends Component {
constructor(props){
super(props);
this.webView = null;
}
onMessage( event ) {
console.log( "On Message", event.nativeEvent.data );
}
sendPostMessage(msg) {
console.log( "Sending post message",msg );
this.webView.postMessage(JSON.stringify(msg));
}
runJSInBackground (code) {
this.webView.injectJavaScript(code)
}
render() {
return (
<WebView
originWhitelist={['*']}
ref={( webView ) => this.webView = webView}
onMessage={this.onMessage}
onError={(e)=>console.log("WebView error: "+e)}
source={{
baseUrl:"include/",
html: `
<html>
<head>
</head>
<body>
<script>
document.addEventListener("message",function(event) {
console.log("Received post message", event); //Work!!!
}, false);
setTimeout(()=>window.postMessage("WhatsAppMANNN!!!"),5000) //doesn`t work ((
</script>
</body>
</html>
` }}
/>
)
}
}
export default Html;
Everything works fine when I send a WebView request, but there is no answer to the return. That is, the window.postMessage method does not work, and the error does not light either. What's the catch, not how I can not find the answer to this question.
react-native
react-native
asked Nov 21 '18 at 6:52
Владимир АристарховВладимир Аристархов
2818
2818
Try with webView.postMessage("WhatsAppMANNN!!!"),5000)
– Anurag Chutani
Nov 21 '18 at 7:02
Does not help, tried and wait for the bridge function waitForBridge() { if (window.postMessage.length !== 1) setTimeout(waitForBridge, 200); else window.postMessage('abcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'); } window.onload = waitForBridge;
– Владимир Аристархов
Nov 21 '18 at 7:23
waiting for the bridge with window.postMessage.length === 1 does not work since chrome 70
– Ulysse Mizrahi
Jan 22 at 17:38
add a comment |
Try with webView.postMessage("WhatsAppMANNN!!!"),5000)
– Anurag Chutani
Nov 21 '18 at 7:02
Does not help, tried and wait for the bridge function waitForBridge() { if (window.postMessage.length !== 1) setTimeout(waitForBridge, 200); else window.postMessage('abcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'); } window.onload = waitForBridge;
– Владимир Аристархов
Nov 21 '18 at 7:23
waiting for the bridge with window.postMessage.length === 1 does not work since chrome 70
– Ulysse Mizrahi
Jan 22 at 17:38
Try with webView.postMessage("WhatsAppMANNN!!!"),5000)
– Anurag Chutani
Nov 21 '18 at 7:02
Try with webView.postMessage("WhatsAppMANNN!!!"),5000)
– Anurag Chutani
Nov 21 '18 at 7:02
Does not help, tried and wait for the bridge function waitForBridge() { if (window.postMessage.length !== 1) setTimeout(waitForBridge, 200); else window.postMessage('abcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'); } window.onload = waitForBridge;
– Владимир Аристархов
Nov 21 '18 at 7:23
Does not help, tried and wait for the bridge function waitForBridge() { if (window.postMessage.length !== 1) setTimeout(waitForBridge, 200); else window.postMessage('abcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'); } window.onload = waitForBridge;
– Владимир Аристархов
Nov 21 '18 at 7:23
waiting for the bridge with window.postMessage.length === 1 does not work since chrome 70
– Ulysse Mizrahi
Jan 22 at 17:38
waiting for the bridge with window.postMessage.length === 1 does not work since chrome 70
– Ulysse Mizrahi
Jan 22 at 17:38
add a comment |
1 Answer
1
active
oldest
votes
Try using:
window.postMessage("Lulz", "*")
Source: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53406669%2freact-native-webview-onmessage-doesnt-work%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Try using:
window.postMessage("Lulz", "*")
Source: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
add a comment |
Try using:
window.postMessage("Lulz", "*")
Source: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
add a comment |
Try using:
window.postMessage("Lulz", "*")
Source: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
Try using:
window.postMessage("Lulz", "*")
Source: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
edited Dec 29 '18 at 17:32
סטנלי גרונן
1,76482245
1,76482245
answered Dec 29 '18 at 17:04
ValdaXDValdaXD
997217
997217
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53406669%2freact-native-webview-onmessage-doesnt-work%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Try with webView.postMessage("WhatsAppMANNN!!!"),5000)
– Anurag Chutani
Nov 21 '18 at 7:02
Does not help, tried and wait for the bridge function waitForBridge() { if (window.postMessage.length !== 1) setTimeout(waitForBridge, 200); else window.postMessage('abcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'); } window.onload = waitForBridge;
– Владимир Аристархов
Nov 21 '18 at 7:23
waiting for the bridge with window.postMessage.length === 1 does not work since chrome 70
– Ulysse Mizrahi
Jan 22 at 17:38