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

}

JS代码备忘的更多相关文章

  1. 代码备忘, TODO宏实现

    代码备忘, TODO宏实现 我们平时在开发过程中, 往往并非憋足气一股脑敲完所有代码.每一个模块, 每一个函数的实现总有个先后顺序. 又或者哪个部分须要做调整, 改动- 所以, 我们须要有一个东西, ...

  2. JS开发备忘笔记-- Javascript中document.execCommand()的用法

    document.execCommand()方法处理Html数据时常用语法格式如下:document.execCommand(sCommand[,交互方式, 动态参数]) 其中:sCommand为指令 ...

  3. ffplay for mfc 代码备忘

    之前上传了一个开源播放器工程ffplay for mfc.它将ffmpeg项目中的ffplay播放器(ffplay.c)移植到了VC的环境下,并且使用MFC做了一套界面.它可以完成一个播放器播放视频的 ...

  4. js菜鸟备忘

    1.图片切换 function changeImage() { var img = document.getElementById("myImg"); ")) img.s ...

  5. ESlint 格式化代码 备忘

    vscode 代码格式化配置 vscode 菜单 文件->首选项->设置 --->进入扩展查找到ESlint,点击任一选项中的[在setting.json中配置],复制以下代码 { ...

  6. TF版网络模型搭建常用代码备忘

    本文主要介绍如何搭建一个网络并训练 最近,我在写代码时经常碰到这样的情况,明明记得代码应该怎么写,在写出来的代码调试时,总是有些小错误.原因不是接口参数个数不对,就是位置不对.为了节约上网查找时间,现 ...

  7. JS判断备忘

    快速引入jquery并显示重点内容 (function(d,j,s,t){t=d.body.appendChild(d.createElement("script"));t.onl ...

  8. ASP.NET基础代码备忘

    使用ASP.NET原生的__doPostBack方法触发asp:Button //javaScript部分 __doPostBack('<%=btnAmountDivided.UniqueID ...

  9. Matlab代码备忘

    1.Matlab写入文件  set(hp1,'xdata',bbb(1,:),'ydata',bbb(2,:),'zdata',bbb(3,:)); M=size(bbb,2); name=strca ...

随机推荐

  1. 线段树练习 3&&P3372 【模板】线段树 1

    题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. 输入描述 Input Description 第一行一个正整数n,接下 ...

  2. C++继承、多态、虚函数

    #答案:http://www.cnblogs.com/tinaluo/articles/6290994.html 1 编写程序:定义一个抽象基类sharpe,只有包含一个求面积的纯虚函数,派生出矩形类 ...

  3. Nexpose

    下载: https://www.rapid7.com/products/nexpose/nexpose-enterprise-trial-thank-you.jsp注册: https://www.ra ...

  4. JSON对象和字符串的转换

    JSON.parse()和JSON.stringify()   1.parse 用于从一个字符串中解析出json 对象.例如 var str='{"name":"cpf& ...

  5. 距离VR时代的真正到来还有多久?

    2016年被称为是VR元年,各大VR设备商的宣传攻势铺天盖地,众VR产品看的人眼花缭乱.随着平民化进程不断推进以及渗透率的提升,VR成为近两年来最引人关注的焦点,在众多领域的共同作用下,VR时代是否即 ...

  6. 一台服务器上同时启动多个 Tomcat

    在同一台服务器上启动多个 Tomcat 服务,需要修改 conf/server.xml文件里的三个部分,如下: 1.修改Http访问端口(默认为8080端口) <Connector port=& ...

  7. angularjs的directive详解

    Directive(指令)笔者认为是AngularJ非常强大而有有用的功能之一.它就相当于为我们写了公共的自定义DOM元素或CLASS属性或ATTR属性,并且它不只是单单如此,你还可以在它的基础上来操 ...

  8. [ An Ac a Day ^_^ ] hdu 2830 矩阵交换II

    第一眼觉得是个dp 但是有了可以随意交换的条件觉得简单了不少 但是还是没做出来…… 看了一下别人的做法才觉得自愧不如 因为所有列都可以随意交换 应该尽量把长的放在一起 那么将所有的矩形排序之后 以第j ...

  9. quagga源码分析--通用库thread

    quagga是开源路由器软件,提供的用户界面与思科,华为的路由器的人机接口几乎一致,非常有学习价值,尤其是开源的协议代码,简直亮瞎了我的小眼睛. quagga的介绍,我就不赘述了,有兴趣的可以找度娘或 ...

  10. CSS Hank兼容浏览器的

    color:red; /* 所有浏览器都支持 */ color:red !important; /* 除IE6外 */ _color:red; /* IE6支持 */ *color:red; /* I ...