1

我在我的 Ionic 项目中使用InAppBrowser问题是添加新的事件侦听器,因为在 ionic-native 的文档中根本不起作用,我提到了原始的 cordova-plugin-inappbrowser并且这些事件都不起作用,我知道这一点是离子包装方面的问题及其糟糕的文档,它们改变了调用插件的整个方式,您需要尝试直到找到正确的方法。

所以我问如何将事件侦听器添加到InAppBrowser插件?

到目前为止我尝试的是:

var _options = 'location=no,clearsessioncache=yes,hardwareback=no';
function openLink(url, target, options) {
  if (angular.isUndefined(options)) {
    options = _options;
  }
  if (!$window.cordova) {
    $window.open(url, '_blank', options);
  } else {
    _attachEvents(new $cordovaInAppBrowser(url, target, options));
  }
}

function _attachEvents(browser) {
  // FIXME this is not working seems, need to find documentation about this
  browser.on('loadstart').subscribe(function (e, event) {
    console.debug(e, event);
    if (event.url.match("mobile/close")) {
      browser.close();
    }
    $rootScope.$broadcast('$ionicParentView.enter');
  });
  browser.on('loaderror').subscribe(function (e, event) {
    console.debug(e, event);
    browser.close();
    $rootScope.$broadcast('$ionicParentView.enter');
  });
}

并尝试了 ngCordova 方式:

$rootScope.$on('$cordovaInAppBrowser:loadstart', function (e, event) {
  if (event.url.match("mobile/close")) {
    $cordovaInAppBrowser.close();
  }
  $rootScope.$broadcast('$ionicParentView.enter');
});
$rootScope.$on('$cordovaInAppBrowser:loaderror', function (e, event) {
  $cordovaInAppBrowser.close();
  $rootScope.$broadcast('$ionicParentView.enter');
});

而且他们不工作,顺便说一句,它正在与 ngCordova 一起工作,但自从我改为 ionic-native 后,它就完全停止工作了。

我将 Ionic 1.3.2 与 ionic-native 2.2.16 一起使用(因为 2.2.17 和 2.3.0 是损坏的版本)

4

0 回答 0