device.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. class devicePixelRatio {
  2. constructor() {
  3. // this.flag = false
  4. }
  5. //获取系统类型
  6. getSystem() {
  7. let flag = false
  8. var agent = navigator.userAgent.toLowerCase();
  9. //针对windows处理
  10. if (agent.indexOf('windows') >= 0) {
  11. return true
  12. }
  13. }
  14. //监听方法兼容写法
  15. addHandler(element, type, handler) {
  16. if (element.addEventListener) {
  17. element.addEventListener(type, handler, false)
  18. } else if (element.attachEvent) {
  19. element.attachEvent("on" + type, handler)
  20. } else {
  21. element["on" + type] = handler
  22. }
  23. }
  24. // 校正浏览器缩放比例
  25. correct() {
  26. //页面devicePixelRatio(设备像素比例)变化后,计算页面body标签zoom修改其大小,来抵消页面devicePixelRatio带来的变化
  27. document.getElementsByTagName('body')[0].style.zoom = 1 / window.devicePixelRatio;
  28. console.log('bodyzoom==>',document.getElementsByTagName('body')[0].style.zoom)
  29. console.log('devicePixelRatio==>',window.devicePixelRatio)
  30. // document.getElementsByTagName('body')[0].style.zoom = 1
  31. }
  32. //监听页面缩放
  33. watch() {
  34. this.addHandler(window, 'resize', function () { //注意这个方法是解决全局有两个window.resize
  35. //重新校正
  36. this.correct()
  37. })
  38. }
  39. //初始化页面比例
  40. init() {
  41. if (this.getSystem()) { //判断设备,目前只在window系统下校正浏览器缩放比例
  42. //初始化页面校正浏览器缩放比例
  43. this.correct()
  44. // 开启监听页面缩放
  45. this.watch()
  46. }
  47. }
  48. }
  49. export default devicePixelRatio;