Hi all,
I'm trying to do the same thing, but I'm struggling to get a message back from the <webview> to the host window.
window.js:
var webview,
window.addEventListener('load', function() {
webview = document.getElementById('webview');
console.log('got webview:', webview);
webview.addEventListener("loadstop", function(event) {
webview.addEventListener("message", function(event) {
console.log('window received message:', event.data)
});
webview.contentWindow.postMessage({
command: 'handshake'
}, '*');
});
// Set webview src attribute
webview.src = targetOrigin;
});
Inside the webview:
function _receiveMessage(event) {
// First message: store appWindow and appOrigin
if (!appWindow || !appOrigin) {
appWindow = event.source;
appOrigin = event.origin;
if (DEBUG) _debug('Opened communication with the Chrome wrapper app.');
_sendMessage({
command: 'handshakereply'
});
}
if (DEBUG) _debug('Received message:', event.data);
}
function _sendMessage(data) {
if (!appWindow || !appOrigin) {
return console.error('Cannot send message to Chrome wrapper app - communication channel has not yet been opened');
}
appWindow.postMessage(data, appOrigin);
if (DEBUG) _debug('Sent message:', data);
}
window.addEventListener('message', _receiveMessage);
The webview JS receives the handshake, and the reply is sent. However, the listener in window.js never logs a received message. I'm doing something wrong with the webview event listener in window.js - any suggestions?
This email was sent by a company owned by Pearson plc, registered office at 80 Strand, London WC2R 0RL. Registered in England and Wales with company number 53723.