@@ -39,65 +39,67 @@ var browser = {
39
39
version : 0
40
40
} ;
41
41
42
- var nav = window . navigator ;
43
- var appName = nav . appName . replace ( / \s / g, '_' ) ;
44
- var userAgent = nav . userAgent ;
42
+ if ( window && window . navigator ) {
43
+ var nav = window . navigator ;
44
+ var appName = nav . appName . replace ( / \s / g, '_' ) ;
45
+ var userAgent = nav . userAgent ;
45
46
46
- var rIE = / M S I E \s ( [ 0 - 9 ] + [ . 0 - 9 ] * ) / ;
47
- var rIE11 = / T r i d e n t .* r v : 1 1 \. / ;
48
- var rEdge = / E d g e \/ ( \d + ) \. / ;
49
- var versionRegex = {
50
- firefox : / F i r e f o x \/ ( \d + ) \. / ,
51
- chrome : / C h r o m e \/ ( \d + ) \. / ,
52
- safari : / V e r s i o n \/ ( [ \d . ] + ) .* S a f a r i \/ ( \d + ) /
53
- } ;
47
+ var rIE = / M S I E \s ( [ 0 - 9 ] + [ . 0 - 9 ] * ) / ;
48
+ var rIE11 = / T r i d e n t .* r v : 1 1 \. / ;
49
+ var rEdge = / E d g e \/ ( \d + ) \. / ;
50
+ var versionRegex = {
51
+ firefox : / F i r e f o x \/ ( \d + ) \. / ,
52
+ chrome : / C h r o m e \/ ( \d + ) \. / ,
53
+ safari : / V e r s i o n \/ ( [ \d . ] + ) .* S a f a r i \/ ( \d + ) /
54
+ } ;
54
55
55
- var key , tmp ;
56
+ var key , tmp ;
56
57
57
- var detector = {
58
- Microsoft_Internet_Explorer : function ( ) { // eslint-disable-line camelcase
59
- var detectedVersion = userAgent . match ( rIE ) ;
58
+ var detector = {
59
+ Microsoft_Internet_Explorer : function ( ) { // eslint-disable-line camelcase
60
+ var detectedVersion = userAgent . match ( rIE ) ;
60
61
61
- if ( detectedVersion ) { // ie8 ~ ie10
62
- browser . msie = true ;
63
- browser . version = parseFloat ( detectedVersion [ 1 ] ) ;
64
- } else { // no version information
65
- browser . others = true ;
66
- }
67
- } ,
68
- Netscape : function ( ) { // eslint-disable-line complexity
69
- var detected = false ;
62
+ if ( detectedVersion ) { // ie8 ~ ie10
63
+ browser . msie = true ;
64
+ browser . version = parseFloat ( detectedVersion [ 1 ] ) ;
65
+ } else { // no version information
66
+ browser . others = true ;
67
+ }
68
+ } ,
69
+ Netscape : function ( ) { // eslint-disable-line complexity
70
+ var detected = false ;
70
71
71
- if ( rIE11 . exec ( userAgent ) ) {
72
- browser . msie = true ;
73
- browser . version = 11 ;
74
- detected = true ;
75
- } else if ( rEdge . exec ( userAgent ) ) {
76
- browser . edge = true ;
77
- browser . version = userAgent . match ( rEdge ) [ 1 ] ;
78
- detected = true ;
79
- } else {
80
- for ( key in versionRegex ) {
81
- if ( versionRegex . hasOwnProperty ( key ) ) {
82
- tmp = userAgent . match ( versionRegex [ key ] ) ;
83
- if ( tmp && tmp . length > 1 ) { // eslint-disable-line max-depth
84
- browser [ key ] = detected = true ;
85
- browser . version = parseFloat ( tmp [ 1 ] || 0 ) ;
86
- break ;
72
+ if ( rIE11 . exec ( userAgent ) ) {
73
+ browser . msie = true ;
74
+ browser . version = 11 ;
75
+ detected = true ;
76
+ } else if ( rEdge . exec ( userAgent ) ) {
77
+ browser . edge = true ;
78
+ browser . version = userAgent . match ( rEdge ) [ 1 ] ;
79
+ detected = true ;
80
+ } else {
81
+ for ( key in versionRegex ) {
82
+ if ( versionRegex . hasOwnProperty ( key ) ) {
83
+ tmp = userAgent . match ( versionRegex [ key ] ) ;
84
+ if ( tmp && tmp . length > 1 ) { // eslint-disable-line max-depth
85
+ browser [ key ] = detected = true ;
86
+ browser . version = parseFloat ( tmp [ 1 ] || 0 ) ;
87
+ break ;
88
+ }
87
89
}
88
90
}
89
91
}
92
+ if ( ! detected ) {
93
+ browser . others = true ;
94
+ }
90
95
}
91
- if ( ! detected ) {
92
- browser . others = true ;
93
- }
94
- }
95
- } ;
96
+ } ;
96
97
97
- var fn = detector [ appName ] ;
98
+ var fn = detector [ appName ] ;
98
99
99
- if ( fn ) {
100
- detector [ appName ] ( ) ;
100
+ if ( fn ) {
101
+ detector [ appName ] ( ) ;
102
+ }
101
103
}
102
104
103
105
module . exports = browser ;
0 commit comments