• JS代码备忘


    function $(v) {
        if (typeof v === 'function') {
            window.onload = v;
        } else if (typeof v === 'string') {
            return document.getElementById(v);
        } else if (typeof v === 'object') {
            return v;
        }
    }
    /*
        获取浏览器计算后的样式。
        1、不要获取复合样式,如:background、margin;
        2、不要获取未定义的样式,否则会不兼容,因为浏览器会根据自身的情况弹出内容;
        3、不要在attr前面加空格,如:getStyle($('div1'),' width'),会弹出undefined.
    */
    function getStyle(obj,attr) {
        return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj)[attr];
    }
    
    
    /*不管是否存在定位,获取从当前位置到html标签的偏移值*/
    
    function getPos(obj) {
        var pos = {left:0,top:0};
    
        while(obj) {
            pos.left+= obj.offsetLeft;
            pos.top+= obj.offsetTop;
            obj = obj.offsetParent;
        }
    
        return pos;
    }
    
    /*获取class样式,并以数组的形式存回*/
    
    function getElementsByClassName(parent,tagName,className) {
        var aEls = parent.getElementsByTagName(tagName);
        var arr = [];
    
        for (var i=0;i<aEls.length;i++) {
    
            var aClassName = aEls[i].className.split(' ');
    
            for (var j=0;j<aClassName.length;j++) {
                if (aClassName[j]== className) {
                    arr.push(aEls[i]);
                    break;
                }
            }
    
        }
        return arr;
    }
    
    /*添加class(可一次性写入多个class以逗号分隔,重复的class不会添加),移除class(可一次性写入多个class以逗号分隔)*/
    
    function addClass(obj,className) {
        var newClassName = className.split(',');
        for (var i=0;i<newClassName.length;i++) {
            // 如果class存在
            if (obj.className) {
                // 如果要添加的class在原来的class中不存在,添加
                var arrClassName = obj.className.split(' ');
                var _index = arrIndexOf(arrClassName,newClassName[i]);
                if (_index == -1) {
                    obj.className += ' '+newClassName[i];            
                }
                // 如果要添加的class在原来的class中存在,不添加
            } 
            // 如果class不存在
            else {
                obj.className = newClassName.join(' ');
            }        
        }
    
    }
    function removeClass(obj,className) {
        var newClassName = className.split(',');
    
        for (var i=0;i<newClassName.length;i++) {
            // 如果有class
            if (obj.className) {
                var arrClassName = obj.className.split(' ');
                var _index = arrIndexOf(arrClassName,newClassName[i]);
                if (_index != -1) {
                    // 如果找到
                    arrClassName.splice(_index,1);
                    obj.className = arrClassName.join(' ');
                }
            }        
        }
    
    }
    
    
    function arrIndexOf(arr,v){
        for (var i=0;i<arr.length;i++) {
            if (arr[i]==v) {
                return i;
            }
        }
        return -1;
    }
    
    //匀速运动框架
            function toMove(obj,attr,target,speed,endFn) {
                clearInterval(obj.timer);
                var speed = obj.offsetLeft < target ? speed : - speed;
                obj.timer = setInterval(function(){
                    
                    if (Math.abs(obj.offsetLeft-target)<Math.abs(speed)) {
                        obj.style[attr] = target + 'px';
                        clearInterval(obj.timer);
                        endFn && endFn();
                    } else {
                        obj.style[attr]= obj.offsetLeft + speed +'px';                    
                    }
    
                },30);
            }
    
    // 缓冲运动框架
    function toMove (obj,iTarget) {
        clearInterval(obj.timer);
        obj.timer = setInterval(function(){
            var speed = (iTarget - obj.offsetTop)/10;
            speed = iTarget>obj.offsetTop ? Math.ceil(speed) : Math.floor(speed);
            if (obj.offsetTop==iTarget) {
                clearInterval(obj.timer);
            }    
            obj.style.top = obj.offsetTop + speed + 'px';            
        },30);
    }
    
    //事件绑定兼容,调用举例:bind(document,'click',fn)
    function bind(obj,evName,fn){
      if (obj.addEventListener) {
          obj.addEventListener(evName,fn,false);  //标准浏览器
      } else {
          obj.attachEvent('on'+evName,function(){
                   fn.call(obj);  //IE9以下 
           });
      }  
    }
     
    //拖拽
    
            function drag(obj){
                obj.onmousedown = function(ev){
                    var ev = ev || event;
                    var disX = ev.clientX-this.offsetLeft;
                    var disY = ev.clientY-this.offsetTop;
              //IE9以下使用,全局捕捉
                    if (this.setCapture){
                        this.setCapture();    
                    }
                    
                    document.onmousemove = function(ev){
                        var ev = ev || event;
                        obj.style.left = ev.clientX - disX +'px';
                        obj.style.top = ev.clientY - disY +'px';
                    };
                    document.onmouseup = function(){
                        document.onmouseup = document.onmousemove = null;
                        if (obj.releaseCapture) {
                            obj.releaseCapture();    
                        }
                        
                    };
                    return false;
                };            
            }
     
     
     // 设置cookie
            function setCookie(key,value,t) {
                var oDate = new Date();
                oDate.setDate(oDate.getDate()+t);
                document.cookie = key+'='+encodeURI(value)+';expires='+oDate.toGMTString();
            }
     // 获取cookie的值
            function getCookie(key) {
                var arr1 = document.cookie.split('; ');
                for (var i=0;i<arr1.length;i++) {
                    var arr2 = arr1[i].split('=');
                    if (arr2[0] == key) {
                        return (decodeURI(arr2[1]));
                    }
                }
            }
    //删除cookie
            function removeCookie(key) {
                setCookie(key,'',-1);
            }
    //AJAX封装
            function ajax(method,url,data,success){
                var xhr = null;
                if (window.XMLHttpRequest) {
                    xhr = new XMLHttpRequest();
                } else {
                    xhr = new ActiveXObject('Microsoft.XMLHTTP')
                }
                if (method == 'get' && data) {
                    url+='?'+data;
                }
                xhr.open(method,url,true);
    
                if (method == 'post') {
                    xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
                    xhr.send(data);
                } else {
                    xhr.send();
                }            
                
    
                xhr.onreadystatechange = function(){
                    if (xhr.readyState==4) {
                        if (xhr.status==200) {
                            success && success(xhr.responseText);
                        } else {
                            alert('ERROR:'+xhr.status);
                        }
                    }
                };
            }
            //异步方式请求URL下载
            function download_file(url) {
    
                var iframeBody, result;
    
                if (typeof(download_file.iframe) == "undefined") {
    
                    var iframe = document.createElement("iframe");
    
                    iframe.setAttribute("name", "newiframe");
    
                    download_file.iframe = iframe;
                    
                    document.body.appendChild(download_file.iframe);
                }
    
                download_file.iframe.src = url;
    
    
                download_file.iframe.onload = function() {
    
                    iframeBody = window.frames["newiframe"].document.body.innerHTML;
    
                    if(iframeBody) {
                        try{
                            result = JSON.parse(iframeBody);
                            alert('result:',result);
                            if (result.status == 0) {
    
                                alert("抱歉,该包还没有生成");
    
                            }
                        }catch(e) {
                            //alert(e)
                        }
                        
                    }
    
                }            
    
                download_file.iframe.style.display = "none";
            }

    var DEFAULT_WIDTH = 800, // 页面的默认宽度

        ua = navigator.userAgent.toLowerCase(), // 根据 user agent 的信息获取浏览器信息

        deviceWidth = window.screen.width, // 设备的宽度

        devicePixelRatio = window.devicePixelRatio || 1, // 物理像素和设备独立像素的比例,默认为1

        scale = deviceWidth/DEFAULT_WIDTH,//缩放比例

        targetDensitydpi;

    // Android4.0以下手机不支持viewport的width,需要设置target-densitydpi

    if (ua.indexOf("android") !== -1 && parseFloat(ua.slice(ua.indexOf("android")+8)) < 4) {

        targetDensitydpi = DEFAULT_WIDTH / deviceWidth * devicePixelRatio * 160;

        $('meta[name="viewport"]').attr('content', 'target-densitydpi=' + targetDensitydpi + ', width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1 user-scalable=no');

    }

    else{

        $('meta[name="viewport"]').attr('content', 'width=' + DEFAULT_WIDTH + ', initial-scale=' + scale + ', minimum-scale=' + scale + ',maximum-scale=' + scale + ' user-scalable=no');

    }

  • 相关阅读:
    url中特殊字符被转义成编码后如何处理
    解决:扰人的报错 Input length must be multiple of 8 when decrypting with padded cipher
    使用fastjson 进行jsonObject转实体类对象
    Mybatis之foreach遍历Map
    Map对象中的keyset()、entryset()和Map.Entry
    jdk的keytool生成jks和获取jks的信息,公匙
    postgres如何不插入重复的值
    docker查看日志记录
    Git Bash输错账号密码如何重新输入
    IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository
  • 原文地址:https://www.cnblogs.com/joya0411/p/3557400.html
Copyright © 2020-2023  润新知