Невозможно опубликовать сообщение из приложения в приложении Cordova - PullRequest
0 голосов
/ 11 февраля 2019

Я использую этот модуль (https://github.com/apache/cordova-plugin-inappbrowser) для возможности открывать внешние ссылки в моем приложении Cordova. Однако пример postMessage из документации не работает.

Мне нуженвозможность взаимодействия экземпляра inappbrowser с родителем (opener). Учитывая, что с inappbrowser нет объекта opener, я просмотрел документацию и тесты репозитория и не могувоспроизведите API postMessage для связи между экземпляром inappbrowser и основным приложением Cordova (родительским).

Вот простой пример, взятый из документации / теста в этом репо:

const ref = cordova.InAppBrowser.open('http://www.google.com', '_blank');

ref.addEventListener('loadstop', () => {
  console.log('loadstop has been fired'); // this fires

  // when this has been executed, `webkit` variable doesn't exist inside of the `inappbrowser`
  // instance
  ref.executeScript({
    code: `(() => {
      var message = "TESTING!!!";
      webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify(message));
    })()`
  });
});

// this is never fired
ref.addEventListener('message', (...args) => {
  console.log('MESSAGE RECEIVED FROM IN_APP_BROWSER', ...args);
});

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Да, в InAppBrowser еще не реализовано postMessage .Единственное решение в этом случае - использовать iframe для получения postMessage с вашей внешней веб-страницы. Это обсуждалось ранее и на этом сайте.

0 голосов
/ 11 февраля 2019

Документация указывает на версию, которая еще не была выпущена.Я указал на 3.1.0-dev версию этого пакета, и реализация работает как шарм.

...