7 votes

Impossible de poster un message de inappbrowser vers l'application Cordova

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);
});

1voto

Detuned Points 1002

La documentation pointe vers une version qui n'a pas encore été publiée. J'ai pointé vers la version 3.1.0-dev de ce package et l'implémentation fonctionne à merveille.

-1voto

Andrew Points 327

Oui, l'InAppBrowser n'a pas encore implémenté postMessage. La seule solution dans ce cas serait d'utiliser un iframe pour recevoir postMessage de votre page web externe. Cela a déjà été discuté sur ce site aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X