From d0f459c56fdb3dae692c359a2915acb2fd063c79 Mon Sep 17 00:00:00 2001 From: Vojta Jina Date: Thu, 23 Jun 2011 20:01:25 +0200 Subject: feat($sniffer): basic implementation of browser feature testing This only extracts our 'hashchange' event and html5 history api detection from $browser. Closes #400 --- src/AngularPublic.js | 7 +++---- src/angular-bootstrap.js | 1 + src/service/sniffer.js | 24 ++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 src/service/sniffer.js (limited to 'src') diff --git a/src/AngularPublic.js b/src/AngularPublic.js index f63948d8..8683b379 100644 --- a/src/AngularPublic.js +++ b/src/AngularPublic.js @@ -2,15 +2,14 @@ var browserSingleton; -angularService('$browser', function($log){ +angularService('$browser', function($log, $sniffer) { if (!browserSingleton) { - // TODO(vojta): inject $sniffer service when implemented browserSingleton = new Browser(window, jqLite(window.document), jqLite(window.document.body), - XHR, $log, {}); + XHR, $log, $sniffer); browserSingleton.bind(); } return browserSingleton; -}, {$inject:['$log']}); +}, {$inject: ['$log', '$sniffer']}); extend(angular, { diff --git a/src/angular-bootstrap.js b/src/angular-bootstrap.js index f88973e0..9f08ff94 100644 --- a/src/angular-bootstrap.js +++ b/src/angular-bootstrap.js @@ -115,6 +115,7 @@ 'service/resource.js', 'service/route.js', 'service/routeParams.js', + 'service/sniffer.js', 'service/window.js', 'service/xhr.bulk.js', 'service/xhr.cache.js', diff --git a/src/service/sniffer.js b/src/service/sniffer.js new file mode 100644 index 00000000..c71a9bde --- /dev/null +++ b/src/service/sniffer.js @@ -0,0 +1,24 @@ +'use strict'; + +/** + * @workInProgress + * @ngdoc service + * @name angular.service.$sniffer + * @requires $window + * + * @property {boolean} history Does the browser support html5 history api ? + * @property {boolean} hashchange Does the browser support hashchange event ? + * + * @description + * This is very simple implementation of testing browser's features. + */ +angularServiceInject('$sniffer', function($window) { + if ($window.Modernizr) return $window.Modernizr; + + return { + history: !!($window.history && $window.history.pushState), + hashchange: 'onhashchange' in $window && + // IE8 compatible mode lies + (!$window.document.documentMode || $window.document.documentMode > 7) + }; +}, ['$window']); -- cgit v1.2.3