我在我的 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 是损坏的版本)