【问题标题】:Tracking url of external site launched in cordova-inappbrowser-plugin在 cordova-inappbrowser-plugin 中启动的外部站点的跟踪 url
【发布时间】:2017-03-11 06:04:13
【问题描述】:

我目前正在构建一个 ionic 应用程序,该应用程序将成为外部 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,这对我来说没有任何区别。

谁能帮帮我?

提前致谢。

【问题讨论】:

  • 您找到解决方案了吗?我还需要跟踪 URL。

标签: ionic-framework cordova-plugins inappbrowser


【解决方案1】:

根据我的经验,并非所有事件都会在所有平台上触发。尝试订阅所有事件并打印一些调试信息。然后在不同的设备(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')});

顺便说一句:我在这里使用 ngCordova...

【讨论】:

  • 感谢您的回复,但使用上述代码时,我没有触发任何事件。
  • 奇怪。我使用它没有任何问题。你在使用最新的 ionic、cordova 和插件吗?您是在浏览器还是设备中进行测试? 'loadstart' 不会在浏览器中触发。尝试设置 'location=true' 我想我看到了一些怪癖,导致某些事件在某些时候无法触发。
  • 快速测试显示所有事件都在我的索尼 experia xa(无论 og 位置设置)上触发,我在 ionic 1.3.2 和最新的 inAppBrowser 插件上触发。
  • 我在 VS 2015 中使用 Ripple Emulator 进行测试。我已经使用 ionic run android 在我的设备上进行了测试,但结果相同:/
【解决方案2】:

很奇怪..我所做的只是更新 ionic,运行 'ionic start test blank' 将插件修改 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。

【讨论】:

  • 我开始怀疑问题是否不在于我在 ionic 中包装的内容实际上是另一个 Web 应用程序,也许当在那里发生导航时它不会发出相同的事件因为旧的网络应用程序是专门使用 swift 和 xcode 为 ios 创建的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-01
  • 2019-11-07
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多