2016-10-28 2 views
0

В настоящее время я создаю ионное приложение, которое должно быть оберткой для внешнего веб-приложения. Я хочу, чтобы отслеживать перенаправление URL-адреса, когда пользователь меняет местоположение во внешнем веб-приложении.Отслеживание URL-адреса внешнего сайта, запущенного в cordova-inappbrowser-plugin

В моем основном контроллере у меня есть следующий код.

app.controller('MainCtrl', function ($rootScope) { 
    document.addEventListener("deviceready", onDeviceReady, false); 
    function onDeviceReady() { 
     // Now safe to use the Codova API 
     var url = "https://external-site/"; 
     var target = "_self"; 
     var options = "location=no"; 
     var ref = cordova.InAppBrowser.open(url, target, options); 
     ref.addEventListener('loadstart', function() { 
      console.log("loadstart"); 
     }); 
    } 
}); 

При загрузке страницы я не запускаю прослушиватель событий или когда пользователь меняет местоположение на внешнем сайте. Я попытался указать цель на _system и _blank, что не имеет для меня никакого значения.

Может кто-нибудь мне помочь?

Заранее спасибо.

ответ

0

Это мой опыт, что все события не всегда срабатывают на всех платформах. Попробуйте подписаться на все события и распечатайте некоторую информацию об отладке. Затем проверьте на разных устройствах (iOS, android) и посмотрите, какие события уволены.

$rootScope.$on('$cordovaInAppBrowser:loadstart', function(e, event){console.log('start')}; 
$rootScope.$on('$cordovaInAppBrowser:loadstop', function(e, event){console.log('stop')}); 
$rootScope.$on('$cordovaInAppBrowser:loaderror', function(e, event){console.log('err')}); 
$rootScope.$on('$cordovaInAppBrowser:exit', function(e, event){console.log('exit')}); 

BTW: Я использую ngCordova здесь ...

+0

Благодарим вас за ответ, но я не получаю какие-либо события, чтобы стрелять при использовании приведенного выше кода. –

+0

странно. Я использую его без проблем. Вы на новейшей ионной, кордове и плагине? Вы тестируете в браузере или устройстве? «loadstart» не запускается в браузере. Попробуйте установить «location = true». Я думаю, что я видел некоторую причуду, из-за чего некоторые события не срабатывали в какой-то момент. – iCediCe

+0

Быстрый тест показывает мне, что все события срабатывают на моем sony experia xa (независимо от настроек местоположения og), im on ionic 1.3.2 и новейшего плагина inAppBrowser. – iCediCe

0

очень странно .. все, что я сделал обновление ионными, запустить «ионный тест запуска пустой» добавить плагин изменить app.js к этому

angular.module('starter', ['ionic']) 
     .run(function ($ionicPlatform) { 
     $ionicPlatform.ready(function() { 
      if (window.cordova && window.cordova.plugins.Keyboard) { 
      var inAppBrowserRef; 
      var target = "_self"; 
      var options = "location=no"; 

      inAppBrowserRef = cordova.InAppBrowser.open('https://onesignal.com/', target, options); 
      inAppBrowserRef.addEventListener('loadstart', function() { console.log('start') }); 
      inAppBrowserRef.addEventListener('loadstop', function() { console.log('stop') }); 
      inAppBrowserRef.addEventListener('loaderror', function() { console.log('err') }); 
      } 
     }); 
     }) 

, а затем запустить «ионный бег андроида» и все события стрелять перфект.

+0

Я начинаю задаваться вопросом, не проблема ли в том, что то, m wrapping in ionic представляет собой еще одно веб-приложение, и, возможно, при наступлении навигации он не выделяет те же события, что и старое веб-приложение, созданное для ios, с использованием swift и xcode. –

Смежные вопросы