Je suis en train d'utiliser ce module (https://github.com/apache/cordova-plugin-inappbrowser) pour la possibilité d'ouvrir des liens externes dans mon application Cordova. Cependant, l'exemple de postMessage
de la documentation ne fonctionne pas.
J'ai besoin de la possibilité pour une instance inappbrowser
de communiquer avec le parent (l'opener
). Étant donné qu'il n'y a pas d'objet opener
avec l'inappbrowser
, j'ai parcouru la documentation et les tests du dépôt, et je ne peux pas reproduire l'API postMessage
pour communiquer entre une instance inappbrowser
et l'application Cordova principale (parent).
Voici un exemple simple tiré de la documentation/test de ce dépôt :
const ref = cordova.InAppBrowser.open('http://www.google.com', '_blank');
ref.addEventListener('loadstop', () => {
console.log('loadstop a été déclenché'); // cela fonctionne
// lorsque ceci est exécuté, la variable `webkit` n'existe pas à l'intérieur de l'instance `inappbrowser`
ref.executeScript({
code: `(() => {
var message = "TESTER!!!";
webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify(message));
})()`
});
});
// ceci ne se déclenche jamais
ref.addEventListener('message', (...args) => {
console.log('MESSAGE REÇU DE IN_APP_BROWSER', ...args);
});