• public.js


    'use strict';
    
    
    // 获取CSS
    function getStyle(obj, attr) {
        return (obj.currentStyle || getComputedStyle(obj, false))[attr];
    }
    
    
    // 设置CSS
    function setStyle(obj, attr, val) {
        switch (typeof attr) {
            case 'string':
                return obj.style[attr] = val;
    
            case 'object':
                for (var i in attr) {
                    obj.style[i] = attr[i];
                }
        }
    }
    
    
    // 获取随机整数
    function rnd(min, max) {
        return Math.floor(Math.random() * (max - min + 1) + min);
    }
    
    
    // 获取DOM的绝对位置
    function getPos(obj) {
        var t = obj.offsetTop,
            l = obj.offsetLeft,
            p = obj.offsetParent;
        while (p) {
            t += p.offsetTop,
            l += p.offsetLeft,
            p =  p.offsetParent;
        }
        return {top: t, left: l};
    }
    
    
    // 获取鼠标划入的方向
    function hoverDir(e, obj) {
        var oh = document.documentElement,
            ob = document.body,
            sw = obj.offsetWidth,
            sh = obj.offsetHeight;
        var sx = getPos(obj).left + sw / 2 - e.clientX - (oh.offsetLeft || ob.offsetLeft),
            sy = getPos(obj).top  + sh / 2 - e.clientY - (oh.scrollTop  || ob.scrollTop);
        return (Math.round((Math.atan2(sy, sx) * 180 / Math.PI + 180) / 90) % 4 + 1) % 4 + 1;
    }
    
    
    // 初始化 rem
    function initRem() {
        var w = window.innerWidth,
            e = 6.4,
            o = document.documentElement;
        o.style.fontSize = (Math.floor(w / e) >= 100 ? 100 : Math.floor(w / e)) + 'px';
    }
    
    
    // 获取GET参数
    function parseParams(property) {
        if (!property) return;
        var arr = location.search.substring(1).split('&'), i, temp;
        for (i = 0; i < arr.length; i ++) {
            temp = arr[i].split('=');
            if (temp[0] === property) return decodeURIComponent(temp[1]);
        }
    }
    
    
    // Class是否存在
    function hasClass(obj, sClass) {
        return !!(obj.className.match(new RegExp('(^|\s)' + sClass + '(\s|$)')));
    }
    
    
    // 添加Class
    function addClass(obj, sClass) {
        !hasClass(obj, sClass) && (obj.className += ' ' + sClass);
    }
    
    
    // 删除Class
    function removeClass(obj, sClass) {
        hasClass(obj, sClass) && (obj.className = obj.className.replace(sClass, '').replace(/(^s+|s+$)/, ''));
    }
    
    
    // 把DOM A 放入到 DOM B 之后
    function insertAfter(obj, target) {
        var nextDom = target.nextElementSibling || target.nextSibling;
        nextDom ? nextDom.parentNode.insertBefore(obj, nextDom) : target.parentNode.appendChild(obj);
    }
    
    
    // 字符按键
    function getCharCode(e, isTrue) {
        if (e.charCode) {
            return !isTrue ? e.charCode : String.fromCharCode(e.charCode);
        }
        else {
            return !isTrue ? e.keyCode : String.fromCharCode(e.keyCode);
        }
    }
    
    
    // 获取动态创建的元素
    function getTarget(e) {
        return e.target || e.srcElement;
    }
    
    
    // 获取最近的元素
    function getRelatedTarget(e) {
        if (e.relatedTarget) {
            return e.relatedTarget;
        }
        else {
            switch (e.type.toLowerCase()) {
                case 'mouseover':
                    return e.fromElement;
    
                case 'mouseout':
                    return e.toElement;
            }
        }
    }
    
    
    // 取消传统事件冒泡
    function stopPropagation(e) {
        window.event ? event.cancelBubble = true : e.stopPropagation();
    }
    
    
    // 取消事件默认行为
    function preventDefault(e) {
        window.event ? event.returnValue = false : e.preventDefault();
    }
    
    
    // URL添加?
    function unifyPath(options) {
        options = options || {};
        options.query = location.href.split('?')[1];
        unifyPath.path = options.url || '';
        unifyPath.data = options.data || '';
        if (typeof options.query === 'undefined') {
            history.replaceState(null, null, location.href.split('#')[0] + '?XX' + location.hash);
            unifyPath(options);
        }
        else {
            if (options.query === options.url) {
                options.callback && options.callback(options.url);
            }
        }
    }
    
    
    // 添加一条历史记录
    function pushState(json) {
        json = json || {};
        json.url = json.url ? '?' + json.url : '';
        json.data = json.data || {};
        json.title = json.title || null;
        history.pushState(json.data, json.title, json.url);
    }
    
    
    // 点击前进,后退按钮时触发 
    function popState(json) {
        json = json || {};
        window.onpopstate = function () {
            if (history.state) {
                json.have && json.have(history.state);
            }
            else {
                json.none && json.none(unifyPath.data, location.href.split('?')[1] === unifyPath.path);
            }
        };
    }
    
    
    // 在数组中查找xxx
    function findInArr(arr, val) {
        if (!arr || !arr.length) return false;
        for (var i in arr) {
            if (arr[i] === val) return true;
        }
        return false;
    }
    
    
    // 数组中是否有重复项
    function isRepeat(arr) {
        var json = {};
        for (var i in arr) {
            if (json[arr[i]]) return true;
            json[arr[i]] = true;
        }
        return false;
    }
    
    
    // 是不是数字
    function isNumber(n) {
        return !(isNaN(n) || isNaN(parseFloat(n)));
    }
  • 相关阅读:
    iOS
    H5
    MongoDB应用场景
    win10虚拟桌面;一不小心按错了突然只剩下桌面,启动的程序都没了
    Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能
    MongoDB模糊查询,以及MongoDB模糊查询时带有括号的情况
    对一个结果集(List)进行手动分页
    史上最污技术解读
    Java编译时多态和运行时多态
    MongoDB常用查询,排序,group,SpringDataMongoDB update group
  • 原文地址:https://www.cnblogs.com/shanchenba/p/5629493.html
Copyright © 2020-2023  润新知