2016-10-28 48 views
0

我目前正在构建一个离子应用程序,它将成为外部Web应用程序的包装。我想要做的是能够跟踪用户在外部网络应用中更改位置时被重定向到的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'不会在浏览器中触发。尝试设置'位置=真'我认为我看到一些怪癖,导致一些事件在某些时候不会触发。 – iCediCe

+0

快速测试显示所有事件都会触发我的索尼体验(无论位置设置如何),即时消息1.3.2和最新的应用程序插件插件。 – 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') }); 
      } 
     }); 
     }) 

然后运行'ionic run android'并且所有事件都会启动perf。

+0

我开始怀疑问题是不是这个事实, m离线包装实际上是另一个网络应用程序,也许当导航发生在那里,它不会发出相同的事件,因为旧的web应用程序是专门使用swift和xcode为ios创建的。 –