智慧农业大数据平台
guoshilong
2022-10-24 b6c337de5d32812de8db8a5ff0c1e0401f1447cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-10-21 16:42:56
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-10-21 16:43:01
 * @FilePath: \sd-jg-school-web\src\utils\devicePixelRatio.js
 * @Description:
 *
 * Copyright (c) 2022 by shuishen 1109946754@qq.com, All Rights Reserved.
 */
class DevicePixelRatio {
    constructor() {
        // this.flag = false
    }
 
    // 获取系统类型
    _getSystem () {
        const flag = false
        var agent = navigator.userAgent.toLowerCase()
        // var isMac = /macintosh|mac os x/i.test(navigator.userAgent);
        // if(isMac) {
        // return false;
        // }
        // 现只针对windows处理,其它系统暂无该情况,如有,继续在此添加
        if (agent.indexOf('windows') >= 0) {
            return true
        }
    }
 
    // 获取页面缩放比例
    // _getDevicePixelRatio() {
    // let t = this;
    // }
    // 监听方法兼容写法
    _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
        }
    }
 
    // 校正浏览器缩放比例
    _correct () {
        const t = this
        // 页面devicePixelRatio(设备像素比例)变化后,计算页面body标签zoom修改其大小,来抵消devicePixelRatio带来的变化。
        document.getElementsByTagName('body')[0].style.zoom = 1 / window.devicePixelRatio
    }
 
    // 监听页面缩放
    _watch () {
        const t = this
        t._addHandler(window, 'resize', function () { // 注意这个方法是解决全局有两个window.resize
            // 重新校正
            t._correct()
        })
    }
 
    // 初始化页面比例
    init () {
        const t = this
        if (t._getSystem()) { // 判断设备,目前只在windows系统下校正浏览器缩放比例
            // 初始化页面校正浏览器缩放比例
            t._correct()
            // 开启监听页面缩放
            t._watch()
        }
    }
}
export default DevicePixelRatio