跟踪在cordova-inappbrowser-plugin中启动的外部网站的网址

时间:2016-10-28 10:48:59

标签: ionic-framework cordova-plugins inappbrowser

我目前正在构建一个离子应用程序,它将成为外部Web应用程序的包装器。我想要做的是能够跟踪当用户更改外部Web应用程序中的位置时重定向到的URL。

在我的主控制器中,我有以下代码。

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,这对我没什么影响。

有人能帮助我吗?

提前致谢。

2 个答案:

答案 0 :(得分: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 ......

答案 1 :(得分: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') });
          }
        });
      })

然后运行'离子运行android'并且所有事件都会触发。