UNPKG

ng-cordova

Version:

[ngCordova](http://ngcordova.com/) ==========

95 lines (72 loc) 2.66 kB
// install : cordova plugin add cordova-plugin-inappbrowser // link : https://github.com/apache/cordova-plugin-inappbrowser angular.module('ngCordova.plugins.inAppBrowser', []) .provider('$cordovaInAppBrowser', [function () { var ref; var defaultOptions = this.defaultOptions = {}; this.setDefaultOptions = function (config) { defaultOptions = angular.extend(defaultOptions, config); }; this.$get = ['$rootScope', '$q', '$window', '$timeout', function ($rootScope, $q, $window, $timeout) { return { open: function (url, target, requestOptions) { var q = $q.defer(); if (requestOptions && !angular.isObject(requestOptions)) { q.reject('options must be an object'); return q.promise; } var options = angular.extend({}, defaultOptions, requestOptions); var opt = []; angular.forEach(options, function (value, key) { opt.push(key + '=' + value); }); var optionsString = opt.join(); ref = $window.open(url, target, optionsString); ref.addEventListener('loadstart', function (event) { $timeout(function () { $rootScope.$broadcast('$cordovaInAppBrowser:loadstart', event); }); }, false); ref.addEventListener('loadstop', function (event) { q.resolve(event); $timeout(function () { $rootScope.$broadcast('$cordovaInAppBrowser:loadstop', event); }); }, false); ref.addEventListener('loaderror', function (event) { q.reject(event); $timeout(function () { $rootScope.$broadcast('$cordovaInAppBrowser:loaderror', event); }); }, false); ref.addEventListener('exit', function (event) { $timeout(function () { $rootScope.$broadcast('$cordovaInAppBrowser:exit', event); }); }, false); return q.promise; }, close: function () { ref.close(); ref = null; }, show: function () { ref.show(); }, executeScript: function (details) { var q = $q.defer(); ref.executeScript(details, function (result) { q.resolve(result); }); return q.promise; }, insertCSS: function (details) { var q = $q.defer(); ref.insertCSS(details, function (result) { q.resolve(result); }); return q.promise; } }; }]; }]);