2016-10-28 74 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創建的。 –