分享原生JavaScript技巧大收集(51~60)

浏览:936 发布日期:2013/08/15 分类:前端开发 关键字: javascript js技巧 代码片段
.
文章来源:jquery教程 - http://www.jq-school.com/Show.aspx?id=305
.
51、原生javascript获取页面可视高度function getPageViewHeight() {
        var d = document, a = d.compatMode == "BackCompat"
                        ? d.body
                        : d.documentElement;
        return a.clientHeight;
}
52、原生javascript跨浏览器添加事件function addEvt(oTarget,sEvtType,fnHandle){
        if(!oTarget){return;}
        if(oTarget.addEventListener){
                oTarget.addEventListener(sEvtType,fnHandle,false);
        }else if(oTarget.attachEvent){
                oTarget.attachEvent("on" + sEvtType,fnHandle);
        }else{
                oTarget["on" + sEvtType] = fnHandle;
        }
}
53、原生javascript跨浏览器删除事件function delEvt(oTarget,sEvtType,fnHandle){
        if(!oTarget){return;}
        if(oTarget.addEventListener){
                oTarget.addEventListener(sEvtType,fnHandle,false);
        }else if(oTarget.attachEvent){
                oTarget.attachEvent("on" + sEvtType,fnHandle);
        }else{
                oTarget["on" + sEvtType] = fnHandle;
        }
}
54、原生javascript去掉url前缀function removeUrlPrefix(a){
  a=a.replace(/:/g,":").replace(/./g,".").replace(///g,"/");
  while(trim(a).toLowerCase().indexOf("http://")==0){
    a=trim(a.replace(/http:\/\//i,""));
  }
  return a;
}
55、原生javascript随机数时间戳function uniqueId(){
        var a=Math.random,b=parseInt;
        return Number(new Date()).toString()+b(10*a())+b(10*a())+b(10*a());
}
56、原生javascript全角半角转换,iCase: 0全到半,1半到全,其他不转化function chgCase(sStr,iCase){
        if(typeof sStr != "string" || sStr.length <= 0 || !(iCase === 0 || iCase == 1)){
                return sStr;
        }
        var i,oRs=[],iCode;
        if(iCase){/*半->全*/
                for(i=0; i<sStr.length;i+=1){ 
                        iCode = sStr.charCodeAt(i);
                        if(iCode == 32){
                                iCode = 12288;                                
                        }else if(iCode < 127){
                                iCode += 65248;
                        }
                        oRs.push(String.fromCharCode(iCode)); 
                }                
        }else{/*全->半*/
                for(i=0; i<sStr.length;i+=1){ 
                        iCode = sStr.charCodeAt(i);
                        if(iCode == 12288){
                                iCode = 32;
                        }else if(iCode > 65280 && iCode < 65375){
                                iCode -= 65248;                                
                        }
                        oRs.push(String.fromCharCode(iCode)); 
                }                
        }                
        return oRs.join("");                
}
57、原生javascript确认是否键盘有效输入值function checkKey(iKey){
        if(iKey == 32 || iKey == 229){return true;}/*空格和异常*/
        if(iKey>47 && iKey < 58){return true;}/*数字*/
        if(iKey>64 && iKey < 91){return true;}/*字母*/
        if(iKey>95 && iKey < 108){return true;}/*数字键盘1*/
        if(iKey>108 && iKey < 112){return true;}/*数字键盘2*/
        if(iKey>185 && iKey < 193){return true;}/*符号1*/
        if(iKey>218 && iKey < 223){return true;}/*符号2*/
        return false;
}
58、原生javascript获取网页被卷去的位置function getScrollXY() {
    return document.body.scrollTop ? {
        x: document.body.scrollLeft,
        y: document.body.scrollTop
    }: {
        x: document.documentElement.scrollLeft,
        y: document.documentElement.scrollTop
    }
}
59、原生javascript另一种正则日期格式化函数+调用方法Date.prototype.format = function(format){ //author: meizz
  var o = {
    "M+" : this.getMonth()+1, //month
    "d+" : this.getDate(),    //day
    "h+" : this.getHours(),   //hour
    "m+" : this.getMinutes(), //minute
    "s+" : this.getSeconds(), //second
    "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
    "S" : this.getMilliseconds() //millisecond
  }
  if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
    (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  for(var k in o)if(new RegExp("("+ k +")").test(format))
    format = format.replace(RegExp.$1,
      RegExp.$1.length==1 ? o[k] :
        ("00"+ o[k]).substr((""+ o[k]).length));
  return format;
}
alert(new Date().format("yyyy-MM-dd hh:mm:ss"));
60、原生javascript时间个性化输出功能/*
1、< 60s, 显示为“刚刚”
2、>= 1min && < 60 min, 显示与当前时间差“XX分钟前”
3、>= 60min && < 1day, 显示与当前时间差“今天 XX:XX”
4、>= 1day && < 1year, 显示日期“XX月XX日 XX:XX”
5、>= 1year, 显示具体日期“XXXX年XX月XX日 XX:XX”
 */
function timeFormat(time){
  var date = new Date(time)
    , curDate = new Date()
    , year = date.getFullYear()
    , month = date.getMonth() + 1
    , day = date.getDate()
    , hour = date.getHours()
    , minute = date.getMinutes()
    , curYear = curDate.getFullYear()
    , curHour = curDate.getHours()
    , timeStr;

  if(year < curYear){
    timeStr = year +'年'+ month +'月'+ day +'日 '+ hour +':'+ minute;
  }else{
    var pastTime = curDate - date
      , pastH = pastTime/3600000;

    if(pastH > curHour){
      timeStr = month +'月'+ day +'日 '+ hour +':'+ minute;
    }else if(pastH >= 1){
      timeStr = '今天 ' + hour +':'+ minute +'分';
    }else{
      var pastM = curDate.getMinutes() - minute;
      if(pastM > 1){
        timeStr = pastM +'分钟前';
      }else{
        timeStr = '刚刚';
      }
    }
  }
  return timeStr;
}
最佳答案
评论( 相关
后面还有条评论,点击查看>>