分享一些前端开发中最常用的JS代码片段

(转自 web前端中常用片段

HTML5 DOM 选择器


   
   
1
2
3
4
5
6
7
// querySelector() 
var  item  =  document . querySelector ( '.item' ) ;
console . log ( item ) ;
// querySelectorAll() nodeList
var  items  =  document . querySelectorAll ( '.item' ) ;
console . log ( items [ 0 ]) ;


阻止默认行为

   
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// js
document . getElementById ( 'btn' ) . addEventListener ( 'click' ,  function  ( event )  {
     event  =  event  ||  window . event
     if  ( event . preventDefault ) {
         // w3c 
         event . preventDefault ( ) ;
     }  else {
         // ie 
         event . returnValue  =  false ;
     }
} ,  false ) ;
// jQuery
$ ( '#btn' ) . on ( 'click' ,  function  ( event )  {
     event . preventDefault ( ) ;
}) ;


阻止冒泡

   
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// js
document . getElementById ( 'btn' ) . addEventListener ( 'click' ,  function  ( event )  {
     event  =  event  ||  window . event
     if  ( event . stopPropagation ) {
         // w3c 
         event . stopPropagation ( ) ;
     }  else {
         // ie 
         event . cancelBubble  =  true ;
     }
} ,  false ) ;
// jQuery
$ ( '#btn' ) . on ( 'click' ,  function  ( event )  {
     event . stopPropagation ( ) ;
}) ;


鼠标滚轮事件

   
   
1
2
3
4
5
6
7
8
9
10
11
12
$ ( '#content' ) . on ( "mousewheel DOMMouseScroll" ,  function  ( event )  { 
     // chrome & ie || // firefox
     var  delta  =  ( event . originalEvent . wheelDelta  &&  ( event . originalEvent . wheelDelta  >  0  ?  1  :  -1 ))  ||  ( event . originalEvent . detail  &&  ( event . originalEvent . detail  >  0  ?  -1  :  1 )) ;  
    
     if  ( delta  >  0 )  { 
         // 
         console . log ( 'mousewheel top' ) ;
     }  else  if  ( delta  <  0 )  {
         // 
         console . log ( 'mousewheel bottom' ) ;
     } 
}) ;


检测浏览器是否支持svg

   
   
1
2
3
4
5
6
7
function  isSupportSVG ( )  { 
     var  SVG_NS  =  'http://www.w3.org/2000/svg' ;
     return  !! document . createElementNS  &&!! document . createElementNS ( SVG_NS ,  'svg' ) . createSVGRect ; 
} 
// 
console . log ( isSupportSVG ( )) ;


检测浏览器是否支持canvas

   
   
1
2
3
4
5
6
7
8
9
10
function  isSupportCanvas ( )  {
     if ( document . createElement ( 'canvas' ) . getContext ) {
         return  true ;
     } else {
         return  false ;
     }
}
// 
console . log ( isSupportCanvas ( )) ;


检测是否是微信浏览器

   
   
1
2
3
4
5
6
7
8
9
10
11
function  isWeiXinClient ( )  {
     var  ua  =  navigator . userAgent . toLowerCase ( ) ; 
     if  ( ua . match ( /MicroMessenger/i ) == "micromessenger" )  { 
         return  true ; 
     }  else  { 
         return  false ; 
     }
}
// 
alert ( isWeiXinClient ( )) ;


jQuery 获取鼠标在图片上的坐标

   
   
1
2
3
4
5
6
7
$ ( '#myImage' ) . click ( function ( event ) {
     // 
     console . log ( 'X'  +  event . offsetX + ' \n  Y:'  +  event . offsetY ) ; 
    
     // 
     console . log ( 'X' +$ ( this ) . offset ( ) . left + ' \n  Y:' +$ ( this ) . offset ( ) . top ) ;
}) ;


验证码倒计时代码

   
   
1
2
<!-- dom -->
< input   id = "send"   type = "button"   value = "" >


   
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// js
var  times  =  60 ,  // 60
     timer  =  null ;
             
document . getElementById ( 'send' ) . onclick  =  function  ( )  {
     // 
     timer  =  setInterval ( function  ( )  {
         times -- ;
        
         if  ( times  <=  0 )  {
              send . value  =  '' ;
              clearInterval ( timer ) ;
              send . disabled  =  false ;
              times  =  60 ;
         }  else  {
              send . value  =  times  +  '' ;
              send . disabled  =  true ;
         }
     } ,  1000 ) ;
}


   
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// jQuery
var  times  =  60 ,
     timer  =  null ;
$ ( '#send' ) . on ( 'click' ,  function  ( )  {
     var  $this  =  $ ( this ) ;
    
     // 
     timer  =  setInterval ( function  ( )  {
         times -- ;
        
         if  ( times  <=  0 )  {
              $this . val ( '' ) ;
              clearInterval ( timer ) ;
              $this . attr ( 'disabled' ,  false ) ;
              times  =  60 ;
         }  else  {
              $this . val ( times  +  '' ) ;
              $this . attr ( 'disabled' ,  true ) ;
         }
     } ,  1000 ) ;
}) ;


常用的一些正则表达式

   
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 
/ ^([ A - Za - z0 - 9 ] | [ \u4e00 - \u9fa5 ])*$ / 
// 
/^\ w +@ ([ 0 -9 a - zA - Z ] + [ . ]) + [ a - z ] { 2 , 4 } $
// 
/^ 1 [ 3| 5| 8| 7 ]\ d { 9 } $
//URL 
/^ http :\ /\ / . +\ . /
// 
/ ( ^\ d { 15 } $ )| ( ^\ d { 17 } ([ 0-9 ]| X| x ) $ ) / 
// 
/ [ \u4e00 - \u9fa5 ] / 
//(
/ [ ^\ x00 -\ xff ] /


js时间戳、毫秒格式化

   
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function  formatDate ( now )  { 
     var  y  =  now . getFullYear ( ) ;
     var  m  =  now . getMonth ( )  +  1 ;  // js
     var  d  =  now . getDate ( ) ;
     var  h  =  now . getHours ( ) ; 
     var  m  =  now . getMinutes ( ) ; 
     var  s  =  now . getSeconds ( ) ;
    
     return  y  +  "-"  +  m  +  "-"  +  d  +  " "  +  h  +  ":"  +  m  +  ":"  +  s ; 
} 
var  nowDate  =  new  Date ( 1442978789184 ) ;
alert ( formatDate ( nowDate )) ;


js限定字符数(注意:一个汉字算2个字符)

   
   
1
< input   id = "txt"   type = "text" >


   
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//
function  getByteVal ( val max )  {
     var  returnValue  =  '' ;
     var  byteValLen  =  0 ;
     for  ( var  i  =  0 ;  i  <  val . length ;  i ++ )  {
         if  ( val [ i ] . match ( / [^ \x00 - \xff ] /ig )  !=  null )  byteValLen  +=  2 ;  else  byteValLen  +=  1 ;
         if  ( byteValLen  >  max )  break ;
         returnValue  +=  val [ i ] ;
     }
     return  returnValue ;
}
$ ( '#txt' ) . on ( 'keyup' ,  function  ( )  {
     var  val  =  this . value ;
     if  ( val . replace ( / [^ \x00 - \xff ] /g ,  "**" ) . length  >  14 )  {
         this . value  =  getByteVal ( val ,  14 ) ;
     }
}) ;


js判断是否移动端及浏览器内核

   
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var  browser  =  { 
     versions :  function ( )  { 
         var  u  =  navigator . userAgent ; 
         return  { 
              trident :  u . indexOf ( 'Trident' )  >  -1 ,  //IE 
              presto :  u . indexOf ( 'Presto' )  >  -1 ,  //opera 
              webKit :  u . indexOf ( 'AppleWebKit' )  >  -1 ,  // 
              gecko :  u . indexOf ( 'Firefox' )  >  -1 ,  //Gecko 
              mobile :  !! u . match ( /AppleWebKit .* Mobile .* / ) ,  // 
              ios :  !! u . match ( / \( i [^ ; ]+ ; (  U; )?  CPU .+ Mac OS X/ ) ,  //ios 
              android :  u . indexOf ( 'Android' )  >  -1  ||  u . indexOf ( 'Linux' )  >  -1 ,  //android 
              iPhone :  u . indexOf ( 'iPhone' )  >  -1  ,  //iPhone 
              iPad :  u . indexOf ( 'iPad' )  >  -1 ,  //iPad 
              webApp :  u . indexOf ( 'Safari' )  >  -1  //Safari 
         } ; 
     }
} 
if  ( browser . versions . mobile ( )  ||  browser . versions . ios ( )  ||  browser . versions . android ( )  ||  browser . versions . iPhone ( )  ||  browser . versions . iPad ( ))  { 
     alert ( '' ) ; 
}

之前我用过一个检测客户端的库 觉得挺好用的,也推荐给大家 叫  device.js ,大家可以 Googel 或 百度
GItHub仓库地址: https://github.com/matthewhudson/device.js

getBoundingClientRect() 获取元素位置

   
   
1
2
3
4
5
6
//leftrighttopbottom
var  myDiv  =  document . getElementById ( 'myDiv' ) ;
var  x  =  myDiv . getBoundingClientRect ( ) . left ; 
var  y  =  myDiv . getBoundingClientRect ( ) . top ; 
// jquery $(this).offset().left$(this).offset().top // jsthis.offsetLeftthis.offsetTop


HTML5全屏

   
   
1
2
3
4
5
6
7
8
9
10
11
12
13
function  fullscreen ( element )  {
     if  ( element . requestFullscreen )  {
         element . requestFullscreen ( ) ;
     }  else  if  ( element . mozRequestFullScreen )  {
         element . mozRequestFullScreen ( ) ;
     }  else  if  ( element . webkitRequestFullscreen )  {
         element . webkitRequestFullscreen ( ) ;
     }  else  if  ( element . msRequestFullscreen )  {
         element . msRequestFullscreen ( ) ;
     }
}
fullscreen ( document . documentElement ) ;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值