Обратный вызов InAppBrowser executeScript вообще не срабатывает

Я создаю гибридное приложение с использованием Ionic с ngCordova. В рабочем процессе входа в приложение я возвращаю страницу с сервера в подключаемый модуль InAppBrowser. Мне нужно прочитать некоторые значения с возвращенной страницы в моем приложении Ionic.

Обычный способ - вызвать executeScript при событии loadstop и настроить обратный вызов, когда этот скрипт что-то вернет. И у меня есть такая настройка, как вы можете видеть в следующем коде. Однако, что бы я ни пробовал, эмулятор iOS, эмулятор Android обратный вызов не запускается.

Вот страница, которая открывает веб-сайт Google в InAppBrowser.

 $cordovaInAppBrowser.open('http://google.com', '_blank', options)
    .then(function (event) {
      //alert('succed')
    })
    .catch(function (event) {
      //alert('errored')
    });

И ниже показан обработчик события loadstop. Сценарий 1 + 1 вводится нормально, потому что я вижу предупреждение с 2. Однако функция обратного вызова вообще не вызывается !!

 $rootScope.$on('$cordovaInAppBrowser:loadstop', function (e, event) {
      $cordovaInAppBrowser.executeScript(
        {
          code: "alert(1+1);"
        },
        function (values) {
          alert('add completed');
        });
});

Я попробовал несколько эмуляторов, но ни один из них не работает. Заранее цените вашу помощь.


person kraval    schedule 23.08.2015    source источник


Ответы (1)


Проблема в том, что executeScript сам по себе promise, поэтому для того, чтобы ваш код работал, вы должны написать что-то вроде этого:

$rootScope.$on('$cordovaInAppBrowser:loadstop', function (e, event) {
  $cordovaInAppBrowser.executeScript(
    {
      code: "alert(1+1);"
    }).then(
        function (values) {
             alert('add completed');
        });
    });
person ʞᴉɯ    schedule 27.05.2016