@@ -169,11 +169,20 @@ module Location = {
169169}
170170
171171module Navigator = {
172+ type browserType =
173+ | Edge
174+ | Opera
175+ | Chrome
176+ | Safari
177+ | Firefox
178+ | InternetExplorer
179+ | Unknown
180+
172181 @val @scope (("window" , "navigator" ))
173182 external userAgent : string = "userAgent"
174183
175184 @val @scope (("window" , "navigator" ))
176- external appName : string = "appName"
185+ external browserNameRaw : string = "appName"
177186
178187 @val @scope (("window" , "navigator" ))
179188 external browserVersion : string = "appVersion"
@@ -184,30 +193,24 @@ module Navigator = {
184193 @val @scope (("window" , "navigator" ))
185194 external browserLanguage : string = "language"
186195
187- let browserName = {
196+ let browserName : browserType = {
188197 let ua = userAgent
189198 if ua -> String .includes ("Edg/" ) || ua -> String .includes ("Edge/" ) {
190- "Edge"
191- }
192- else if ua -> String .includes ("OPR/" ) || ua -> String .includes ("Opera/" ) {
193- "Opera"
194- }
195- else if ua -> String .includes ("Chrome/" ) && ! (ua -> String .includes ("Edg/" )) {
196- "Chrome"
197- }
198- else if ua -> String .includes ("Safari/" ) && ! (ua -> String .includes ("Chrome/" )) {
199- "Safari"
200- }
201- else if ua -> String .includes ("Firefox/" ) {
202- "Firefox"
203- }
204- else if ua -> String .includes ("MSIE " ) || ua -> String .includes ("Trident/" ) {
205- "Internet Explorer"
206- }
207- else if appName == "Netscape" {
208- "Unknown"
199+ Edge
200+ } else if ua -> String .includes ("OPR/" ) || ua -> String .includes ("Opera/" ) {
201+ Opera
202+ } else if ua -> String .includes ("Chrome/" ) && ! (ua -> String .includes ("Edg/" )) {
203+ Chrome
204+ } else if ua -> String .includes ("Safari/" ) && ! (ua -> String .includes ("Chrome/" )) {
205+ Safari
206+ } else if ua -> String .includes ("Firefox/" ) {
207+ Firefox
208+ } else if ua -> String .includes ("MSIE " ) || ua -> String .includes ("Trident/" ) {
209+ InternetExplorer
210+ } else if browserNameRaw == "Netscape" {
211+ Unknown
209212 } else {
210- appName
213+ Unknown
211214 }
212215 }
213216
0 commit comments