/**
 * @description 校正页面在系统进行缩放后导致页面被放大的问题，通常放大比例是125%、150%
 * **/
class DevicePixelRatioCorrector {
	constructor() {
	  this.isSupportedOS = this._isSupportedOS();
	  this.originalFontSize = parseFloat(getComputedStyle(document.body).fontSize); // 获取原始字体大小
	}

  
	// 检测是否为支持的操作系统（目前为Windows）
	_isSupportedOS() {
	  const agent = navigator.userAgent.toLowerCase();
	  return agent.indexOf("windows") >= 0 
	}
  
	// 添加事件监听器，兼容不同浏览器
	_addEvent(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;
	  }
	}
  
	// 校正浏览器缩放比例
	_correctZoom() {
	  const zoomLevel = window.devicePixelRatio !== 1 ? 1 / window.devicePixelRatio : 1;
	  document.body.style.zoom = zoomLevel;
	   // 调整字体大小以保持可读性
	   const adjustedFontSize = this.originalFontSize * zoomLevel;
	   document.body.style.fontSize = `${adjustedFontSize}px`;
	}
  
	// 监听窗口缩放事件
	_watchResize() {
	  this._addEvent(window, 'resize', this._correctZoom.bind(this));
	}
  
	// 初始化页面缩放校正
	init() {
	  if (this.isSupportedOS) {
		this._correctZoom(); // 初始化页面校正浏览器缩放比例
		this._watchResize(); // 开启监听页面缩放
	  }
	}
  }
  
  export default DevicePixelRatioCorrector;