我在我的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是破碎版本)