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');
}