js常用方法收录

//----------------------------------
//常用js方法收录,解决各类兼容性问题。
//author:Kekang
//date:2015-6-29
//remarks:分为兼容性区,工具区,常用校验方法区和经典方法区。个中方法以原生js优先
//----------------------------------
//**********************************************************************************************************
//**********************************************************************************************************
//**********************************************************************************************************
//---------Start:兼容性区-----------
var EventUtil = {
//添加事件
addHandler:function(element,type,handler){
//element:操作的对象 type:事件名称 handler:事件处理函数
if(element.addEventListener){
element.addEventListener(type,handler,false);
}else if(element.attachEvent){
element.attachEvent("on"+type,handler);
}else{
//在现代的浏览器中,估计都不会执行到这段代码,如果执行的话,那只能说,你out了,但没事,事件照样能用,放心吧,呵呵
element["on"+type] = handler;
}
},
//移除事件
removeHandler:function(element,type,handler){
if(element.addEventListener){
element.removeEventListener(type,handler,false);
}else if(element.attachEvent){
element.detachEvent("on"+type,handler);
}else{
element["on"+type] = null;
}
},
//终止事件
stop:function(evt){
evt = evt || window.event;
evt.stopPropagation?evt.stopPropagation():evt.cancelBubble=true;
}
};
eg:EventUtil.addEvents(document.getElementById("btnNext"),'click',subcar=function(){
//do something...
});
//---------End:兼容性区-------------
//**********************************************************************************************************
//**********************************************************************************************************
//**********************************************************************************************************
//---------Start:工具区------------
//截取URL#后面字符串
function getProType(){
return window.location.hash.split('#')[1];
}
//截取URL相关参数
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return "";
}
//截取字符串相关参数
function getStr(str,name){
var str1 = str.indexOf(name+"=");
var len = name.length;
var get_str = "";
if (str1 != -1) {
get_str = str.substring(str1);
var str2 = get_str.indexOf("&");
if (str2 != -1) {
get_str = get_str.substring(len+1, str2);
}else{
get_str = get_str.substring(len+1);
}
}
return get_str;//不转码
//return decodeURIComponent(get_str);//转码
}
////截取cookie中某参数
function getCookie(name) {
var strCookie = document.cookie;
var arrCookie = strCookie.split(";");

for ( var i = 0; i < arrCookie.length; i++) {
var arr = arrCookie[i].split("=");
if ($.trim(arr[0]) == name)
return $.trim(arr[1]);
}
return "";
}
//去掉字符串头尾空格
function trim(str) {
return str.replace(/(^\s*)|(\s*$)/g, "");
}
//计算中英文字符长度(无论字符串是中文还是英文还是混合型)
function characterLength(s) {
var length = 0;
var blank = s.split("");
for (var i=0;i<blank.length;i++) {
if (blank[i].charCodeAt(0)<299) {
length++;
}
else {
length+=2;
}
}
return length;
}
//输入框只可输入数字
function onlyWriteNum(e,obj){
var currKey=0,e=e || event;
currKey=e.keyCode||e.which||e.charCode;
var keyName = String.fromCharCode(currKey);
if(currKey == 37 || currKey == 39 || currKey == 8 || currKey == 46){
return;
}
if(obj.value.length==1){
obj.value=obj.value.replace(/[^1-9]/g,'');
}
else{
obj.value=obj.value.replace(/\D/g,'');
}
/*$(document).keyup(function(event){

});*/
//currKey 按键码 keyName 字符
}
eg:onkeyup="onlyWriteNum(event,this);"
//要获取当前页面的滚动条纵坐标位置
function getScrollTop(){
if(document.documentElement.scrollTop)
{return document.documentElement.scrollTop;}
else
{return document.body.scrollTop}
}
//禁止右键
$(document).bind("contextmenu",function(){
return false;
});
//JS去除相邻的重复字符串
var str = "aabdeegdcffdsf",
result = [],
tempStr = "";
var removeDuplicate = function ( str ){
var arr = str.split('');//把字符串分割成数组
//arr.sort();//排序
for(var i = 0; i < arr.length; i++){
if(arr[i] !== tempStr){
result.push(arr[i]);
tempStr = arr[i];
}else{
continue;
}
}
return result.join("");
}
//console.log(removeDuplicate(str)); //abdegdcfdsf
//JS去除所有的重复字符串
var removeDuplicate2 = function(str){
var reg = /(.)(?=.*\1)/g;
var result = str.replace(reg, "");
return result;
}
//console.log(removeDuplicate(str)); //abegcdsf

//原生JavaScript加入收藏夹
function AddFavorite(sURL, sTitle) {
try {
window.external.addFavorite(sURL, sTitle)
} catch(e) {
try {
window.sidebar.addPanel(sTitle, sURL, "")
} catch(e) {
alert("加入收藏失败,请使用Ctrl+D进行添加")
}
}
}

//原生JavaScript设为首页
function setHomepage() {
if (document.all) {
document.body.style.behavior = 'url(#default#homepage)';
document.body.setHomePage('http://www.cnblogs.com/LoveOrHate/')
} else if (window.sidebar) {
if (window.netscape) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
} catch(e) {
alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true")
}
}
var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
prefs.setCharPref('browser.startup.homepage', 'http://www.cnblogs.com/LoveOrHate/')
}
}

//原生JavaScript判断IE6
var ua = navigator.userAgent.toLowerCase();
var isIE6 = ua.indexOf("msie 6") > -1;
if (isIE6) {
try {
document.execCommand("BackgroundImageCache", false, true)
} catch(e) {}
}

//原生JavaScript加载样式文件
function LoadStyle(url) {
try {
document.createStyleSheet(url)
} catch(e) {
var cssLink = document.createElement('link');
cssLink.rel = 'stylesheet';
cssLink.type = 'text/css';
cssLink.href = url;
var head = document.getElementsByTagName('head')[0];
head.appendChild(cssLink)
}
}

//原生JavaScript返回脚本内容
function evalscript(s) {
if(s.indexOf('<script') == -1) return s;
var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;
var arr = [];
while(arr = p.exec(s)) {
var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i;
var arr1 = [];
arr1 = p1.exec(arr[0]);
if(arr1) {
appendscript(arr1[1], '', arr1[2], arr1[3]);
} else {
p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;
arr1 = p1.exec(arr[0]);
appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);
}
}
return s;
}

//原生JavaScript清除脚本内容
function stripscript(s) {
return s.replace(/<script.*?>.*?<\/script>/ig, '');
}

//原生JavaScript动态加载脚本文件
function appendscript(src, text, reload, charset) {
var id = hash(src + text);
if(!reload && in_array(id, evalscripts)) return;
if(reload && $(id)) {
$(id).parentNode.removeChild($(id));
}

evalscripts.push(id);
var scriptNode = document.createElement("script");
scriptNode.type = "text/javascript";
scriptNode.id = id;
scriptNode.charset = charset ? charset : (BROWSER.firefox ? document.characterSet : document.charset);
try {
if(src) {
scriptNode.src = src;
scriptNode.onloadDone = false;
scriptNode.onload = function () {
scriptNode.onloadDone = true;
JSLOADED[src] = 1;
};
scriptNode.onreadystatechange = function () {
if((scriptNode.readyState == 'loaded' || scriptNode.readyState == 'complete') && !scriptNode.onloadDone) {
scriptNode.onloadDone = true;
JSLOADED[src] = 1;
}
};
} else if(text){
scriptNode.text = text;
}
document.getElementsByTagName('head')[0].appendChild(scriptNode);
} catch(e) {}
}
//原生JavaScript实现字符串长度截取
function cutstr(str, len) {
var temp;
var icount = 0;
var patrn = /[^\x00-\xff]/;
var strre = "";
for (var i = 0; i < str.length; i++) {
if (icount < len - 1) {
temp = str.substr(i, 1);
if (patrn.exec(temp) == null) {
icount = icount + 1
} else {
icount = icount + 2
}
strre += temp
} else {
break
}
}
return strre;
}
alert(cutstr("abcdefghijk",5));
//原生JavaScript获取域名主机
function getHost(url) {
var host = "null";
if(typeof url == "undefined"|| null == url) {
url = window.location.href;
}
var regex = /^\w+\:\/\/([^\/]*).*/;
var match = url.match(regex);
if(typeof match != "undefined" && null != match) {
host = match[1];
}
return host;
}
//原生JavaScript去除左右空格
String.prototype.trim = function() {
var reExtraSpace = /^\s*(.*?)\s+$/;
return this.replace(reExtraSpace, "$1")
}
//原生JavaScript判断是否为数字类型
function isDigit(value) {
var patrn = /^[0-9]*$/;
if (patrn.exec(value) == null || value == "") {
return false
} else {
return true
}
}
//原生JavaScript设置cookie
function setCookie(name, value, Hours) {
var d = new Date();
var offset = 8;
var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
var nd = utc + (3600000 * offset);
var exp = new Date(nd);
exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);
document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=360doc.com;"
}
//原生JavaScript获取cookie
function getCookie(name) {
var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
if (arr != null) return unescape(arr[2]);
return null
}

//操作缓存localStorage+cookie

var historys = { //缓存

isLocalStorage:window.localStorage?true:false,
set : function(key,value){ //设置缓存
if(this.isLocalStorage){
window.localStorage.setItem(key,value);
}else{
var expireDays = 365; //失效时间
var exDate=new Date();
exDate.setTime(exDate.getTime()+expireDays*24*60*60*1000);
document.cookie=key + "=" + escape(value)+";expires=" + exDate.toGMTString();
}
},
read : function(key){ //读取缓存
if(this.isLocalStorage){
return window.localStorage.getItem(key);
}else{
var arr,reg=new RegExp("(^| )"+key+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg)){
return unescape(arr[2]);
}else{
return null;
}
}
},
del : function(key){ //删除缓存
if(this.isLocalStorage){
localStorage.removeItem(key);
}else{
var exDate = new Date();
exDate.setTime(exDate.getTime() - 1);
var read_val=this.read(key);
if(read_val!=null) document.cookie= key + "="+read_val+";expires="+exDate.toGMTString();
}
}
}

//JS判断客户端操作系统

function detectOS() {
    var sUserAgent = navigator.userAgent;
    var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
    var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
    if (isMac) return "Mac";
    var isUnix = (navigator.platform == "X11") && !isWin && !isMac;
    if (isUnix) return "Unix";
    var isLinux = (String(navigator.platform).indexOf("Linux") > -1);
    if (isLinux) return "Linux";
    if (isWin) {
        var isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1 || sUserAgent.indexOf("Windows 2000") > -1;
        if (isWin2K) return "Win2000";
        var isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1 || sUserAgent.indexOf("Windows XP") > -1;
        if (isWinXP) return "WinXP";
        var isWin2003 = sUserAgent.indexOf("Windows NT 5.2") > -1 || sUserAgent.indexOf("Windows 2003") > -1;
        if (isWin2003) return "Win2003";
        var isWinVista= sUserAgent.indexOf("Windows NT 6.0") > -1 || sUserAgent.indexOf("Windows Vista") > -1;
        if (isWinVista) return "WinVista";
        var isWin7 = sUserAgent.indexOf("Windows NT 6.1") > -1 || sUserAgent.indexOf("Windows 7") > -1;
        if (isWin7) return "Win7";
    }
    return "other";
}
 
document.writeln("您的操作系统是:" + detectOS());

//JS判断浏览器类型

function judge(){    
    var browser = {
        versions: function() {
                var u = navigator.userAgent, app = navigator.appVersion;
                return {//移动终端浏览器版本信息
                    trident: u.indexOf('Trident') > -1, //IE内核
                    presto: u.indexOf('Presto') > -1, //opera内核
                    webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                    gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                    mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), //是否为移动终端
                    ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                    android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
                    iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器
                    iPad: u.indexOf('iPad') > -1, //是否iPad
                    webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
                };
             }(),
        language: (navigator.browserLanguage || navigator.language).toLowerCase()
    }
    console.log(browser.language)
    if (browser.versions.ios || browser.versions.iPhone || browser.versions.iPad) {
        // window.location="www.zhongsou.com";
    }else if (browser.versions.android) {
        // window.location="http://www.baidu.com";
    }
    /*window.location.href="https://itunes.apple.com/us/app/ma-ma-fan-er/id985525130?mt=8&uo=4";*/
}
//var bb=new judge();


//---------End:工具区--------------
//**********************************************************************************************************
//**********************************************************************************************************
//**********************************************************************************************************
//---------Start:常用校验方法区-----------
//姓名校验
function check_name(nameValue){
if(nameValue=="" || nameValue == null){
return false;
}else if (nameValue == '不详'
|| nameValue == '未知'
|| nameValue == '测试'
|| nameValue == '不知道'
|| nameValue == '姓名'){
return false;
}else if(!nameValue.match(/^[\u4e00-\u9fa5]{2,8}$/g)){
return false;
}else {
return true;
}
}
//手机号校验
function check_phone(phoneVal){
if(phoneVal == null || phoneVal ==""){
return false;
}else if(phoneVal && !/^1[34578]\d{9}$/.test(phoneVal)){
return false;
}else{
return true;
}
}
// 手机端手机号校验
function phoneValidate(inpVal){
var Errors = [ true,"*请输入手机号码","*请正确填写手机号码"];
var phoneNum = inpVal;
if(phoneNum == null || phoneNum == ""){
return Errors[1];
}else if(!phoneNum.match(/^1(3[0-9]|5[0-35-9]|8[01235-9])\d{8}$/)){
return Errors[2];
}
return true;
}
function checkCodeValidate(seCode){
var Errors = [ true,"*请输入动态验证码","*请正确输入验证码"];
if(seCode == null || seCode ==""){
return Errors[1];
}else if(seCode && !/^\d{6}$/.test(seCode)){
return Errors[2];
}else{
return true;
};
}
/*验证验证码*/
function check_code(seCode){
if(seCode == null || seCode ==""){
return false;
}else if(seCode && !/^\d{6}$/.test(seCode)){
return false;
}else{
return true;
};
}
//身份证校验---- if(!ID || !/^\d{3}(\d|X|x)$/.test(ID)){//身份证//$('#IDError').html('请输入身份证后4位');
function check_identity(sfz){
var reg = /^(?:\d{8}(?:0[1-9]|1[0-2])[0123]\d{4}|\d{6}(?:18|19|20)\d{2}(?:0[1-9]|1[0-2])[0123]\d{4}[0-9Xx])?$/;
if(sfz == null || sfz ==""){
return false;
}else if(sfz && !reg.test(sfz)){
return false;
}else {
return true;
}
}

/**
* 严格的身份证号码校验
*/
function idCard(idcard) {
var Errors = [
true,
"*身份证号码位数不对","*身份证号码校验错误",
"*身份证号码校验错误","*身份证地区非法","请输入身份证号码"];
var area = {
11: "\u5317\u4eac", 12: "\u5929\u6d25", 13: "\u6cb3\u5317", 14: "\u5c71\u897f", 15: "\u5185\u8499\u53e4", 21: "\u8fbd\u5b81", 22: "\u5409\u6797", 23: "\u9ed1\u9f99\u6c5f",
31: "\u4e0a\u6d77", 32: "\u6c5f\u82cf", 33: "\u6d59\u6c5f", 34: "\u5b89\u5fbd", 35: "\u798f\u5efa", 36: "\u6c5f\u897f", 37: "\u5c71\u4e1c", 41: "\u6cb3\u5357", 42: "\u6e56\u5317",
43: "\u6e56\u5357", 44: "\u5e7f\u4e1c", 45: "\u5e7f\u897f", 46: "\u6d77\u5357", 50: "\u91cd\u5e86", 51: "\u56db\u5ddd", 52: "\u8d35\u5dde", 53: "\u4e91\u5357", 54: "\u897f\u85cf",
61: "\u9655\u897f", 62: "\u7518\u8083", 63: "\u9752\u6d77", 64: "\u5b81\u590f", 65: "\u65b0\u7586", 71: "\u53f0\u6e7e", 81: "\u9999\u6e2f", 82: "\u6fb3\u95e8", 91: "\u56fd\u5916"
};
var Y, JYM;
var S, M;
var idcard_array = new Array();
idcard_array = idcard.split("");
if(idcard == ""){//为空
return Errors[5];
}
if (area[parseInt(idcard.substr(0, 2))] == null) {
return Errors[4]
}
switch (idcard.length) {
case 15://15_DIGITS_ID_TOKEN
if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)) {
ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/
} else {
ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/
}
if (ereg.test(idcard)) {
return Errors[0]
} else {
return Errors[2]
}
break;
case 18:
if (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0)) {
ereg = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/
} else {
ereg = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/
}
if (ereg.test(idcard)) {
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y, 1);
if(idcard_array[17] == "x"){
idcard_array[17] = "X";
}
if (M == idcard_array[17]) {
return Errors[0]
} else {
return Errors[3]
}
} else {
return Errors[2]
}
break;
default:
return Errors[1];
break;
}
return true;
}
//---------End:常用校验方法区-------------
//**********************************************************************************************************
//**********************************************************************************************************
//**********************************************************************************************************
//---------Start:经典方法区------------
//传入type(数字值)遍历得到键,举一反三
function getHash(type){
var returnStr="";
var codeType = {
'waibcx':'61',
'yezd':'53',
'cgi_shouxd':'21'
};
if(type){
for(var k in codeType){
if(type == codeType[k]){
returnStr = k;
};
};
};
return returnStr;
}
//传入type(任意值),匹配指定数组(可变),匹配到true,匹配不到false
function getCityPass (type) {// Others
var returnStr = false;
var str = ['8874','1000','110','112','113','119'];
if (str.length > 0) {
for (var k = 0; k < str.length; k++) {
if (type == str[k]) {
returnStr = true;
};
};
};
return returnStr;
}
//cutDown('btn-code', 60);// 第一个参数表示倒计时按钮,第二个表示倒计时时间
function cutDown(el, x){
var codeEl = $('.'+el), n = x;
function jishi(){
n--;
n = n <=0 ? 0 : n;
if (n == 0){
//codeEl.addClass('btnEnable');
}
codeEl.html(n+'s');
if(n == 0){
codeEl.html('重新获取').removeClass('btnEnable');
}

var t = setTimeout(function(){
if (n<=0){
clearTimeout(t);
cutDown('btn-code', 120);
}else{
jishi();
}
}, 1000);
}

codeEl.on('click', function(){
codeEl.off('click');
jishi();
codeEl.addClass('btnEnable');
});
}

//---------End:经典方法区--------------

posted @ 2015-09-06 15:27  追恋KG  阅读(294)  评论(0编辑  收藏  举报