browser.js 1.8 KB

123456789101112131415161718192021222324252627282930313233
  1. // Kludges for bugs and behavior differences that can't be feature
  2. // detected are enabled based on userAgent etc sniffing.
  3. let userAgent = navigator.userAgent
  4. let platform = navigator.platform
  5. export let gecko = /gecko\/\d/i.test(userAgent)
  6. let ie_upto10 = /MSIE \d/.test(userAgent)
  7. let ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent)
  8. let edge = /Edge\/(\d+)/.exec(userAgent)
  9. export let ie = ie_upto10 || ie_11up || edge
  10. export let ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1])
  11. export let webkit = !edge && /WebKit\//.test(userAgent)
  12. let qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent)
  13. export let chrome = !edge && /Chrome\//.test(userAgent)
  14. export let presto = /Opera\//.test(userAgent)
  15. export let safari = /Apple Computer/.test(navigator.vendor)
  16. export let mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent)
  17. export let phantom = /PhantomJS/.test(userAgent)
  18. export let ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent)
  19. export let android = /Android/.test(userAgent)
  20. // This is woefully incomplete. Suggestions for alternative methods welcome.
  21. export let mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent)
  22. export let mac = ios || /Mac/.test(platform)
  23. export let chromeOS = /\bCrOS\b/.test(userAgent)
  24. export let windows = /win/i.test(platform)
  25. let presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/)
  26. if (presto_version) presto_version = Number(presto_version[1])
  27. if (presto_version && presto_version >= 15) { presto = false; webkit = true }
  28. // Some browsers use the wrong event properties to signal cmd/ctrl on OS X
  29. export let flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11))
  30. export let captureRightClick = gecko || (ie && ie_version >= 9)