离子原生InAppBrowser:如何添加事件监听器

时间:2017-01-22 11:53:44

标签: ionic-framework ionic-native

我在我的Ionic项目中使用InAppBrowser问题是添加新的事件监听器,因为离子本机的文档根本不起作用,我提到原始cordova-plugin-inappbrowser而没有这些事件是有效的,我知道这是Ionic包装方面的问题和他们糟糕的文档,他们改变了调用插件的整个方式,你需要尝试,直到你得到正确的方式。

所以我问如何将事件监听器添加到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');
});

他们没有工作,BTW,它正在与ngCordova合作,但由于我改为离子原生,它根本停止了工作。

我使用Ionic 1.3.2与离子原生2.2.16(因为2.2.17和2.3.0是破碎版本)

0 个答案:

没有答案