class devicePixelRatio {
  /* 获取系统类型 */
  getSystem() {
    const agent = navigator.userAgent.toLowerCase();
    // const isMac = /macintosh|mac os x/i.test(navigator.userAgent);
    // if (isMac) return false;
    // 目前只针对 win 处理，其它系统暂无该情况，需要则继续在此添加即可
    if (agent.indexOf("windows") >= 0) return true;
  }
  /* 监听方法兼容写法 */
  addHandler(element, type, handler) {
    if (element.addEventListener) {
      element.addEventListener(type, handler, false);
    } else if (element.attachEvent) {
      element.attachEvent("on" + type, handler);
    } else {
      element["on" + type] = handler;
    }
  }
  getZoom() {
    let zoom = 1;
    const screen = window.screen,
      ua = navigator.userAgent.toLowerCase();

    if (window.devicePixelRatio !== undefined) {
      zoom = window.devicePixelRatio;
    } else if (~ua.indexOf('msie')) {
      if (screen.deviceXDPI && screen.logicalXDPI) {
        zoom = screen.deviceXDPI / screen.logicalXDPI;
      }
    } else if (window.outerWidth !== undefined && window.innerWidth !== undefined) {
      zoom = window.outerWidth / window.innerWidth;
    }
    return this.getDecimal(zoom);
  }

  getDecimal = (num) => {
    return Math.round(num * 100) / 100;
  };
  /* 校正浏览器缩放比例 */
  correct() {
    const zoom = this.getZoom();
    // 屏幕分辨率
    const screenResolution = window.screen.width;
    // 获取浏览器内部宽度
    const browserWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
    // 浏览器缩放倍数
    // 浏览器外部宽度不受浏览器缩放影响，浏览器内部宽度受影响,所以根据这个可以计算出浏览器缩放倍数（F12调试工具的占位会影响该值）
    const browserZoom = this.getDecimal(window.outerWidth / browserWidth);
    // 系统缩放倍数
    const systemZoom = this.getDecimal(zoom / browserZoom);
    // 系统分辨率
    const systemResolution = Math.round(screenResolution * systemZoom);
    // 页面devicePixelRatio（设备像素比例）变化后，计算页面body标签zoom修改其大小，来抵消devicePixelRatio带来的变化
    // document.getElementsByTagName("body")[0].style.zoom =
    //   1 / window.devicePixelRatio;
      // alert(1 / window.devicePixelRatio)
      // document.getElementById('mapDiv').style.height = (((1-(1 / window.devicePixelRatio))+1) * window.innerHeight )+ 'px'
      // document.getElementById("show-dom").style.zoom =
      // 1 / window.devicePixelRatio;
      document.getElementsByClassName("ant-modal")[0].style.zoom =
      1 / window.devicePixelRatio - 0.02;
      
  }
  /* 监听页面缩放 */
  watch() {
    const that = this;
    // 注意: 这个方法是解决全局有两个window.resize
    that.addHandler(window, "resize", function () {
      that.correct(); // 重新校正浏览器缩放比例
    });
  }
  /* 初始化页面比例 */
  init() {
    // window.screen.height * window.devicePixelRatio
    const that = this;
    // 判断设备，只在 win 系统下校正浏览器缩放比例
    if (that.getSystem()) {
      that.correct(); // 校正浏览器缩放比例
      that.watch(); // 监听页面缩放
    }
  }
}
export default devicePixelRatio;