I have developed a website which I intend to display inside a webview, within a Chrome App. This works fine.
Now, I want to use postMessage from the website, to send messages out of the webview and into the containing Chrome App. This is done via top.postMessage
inside the webview.
I've tried the following event listeners:
webView.contentWindow.addEventListener('message', messageHandler);
webView.addEventListener('message', messageHandler);
window.addEventListener('message', messageHandler);
document.addEventListener('message', messageHandler);
I have successfully implemented the following event listeners. All of which work as expected: contentload
, dialog
and consolemessage
.
Unless I can get this to work, I am considering using consolemessage
to send messages from the webview to the container - something I find unappealing, and I suspect it won't work when not using the developer mode.
The reason that the embedded web page is unable to post messages to the app, is because the embedded web page does not have a reference to the app.
top.postMessage
is not a reference to the app.top
would work if you were trying to access the topmost frame, within the same webview.To be able to send messages to the app, the web page needs a reference to the app. The easiest way to do this, is by having the app send the first message to the frame - a "hello"-message.
From the app:
In the web page: