`
vipshichg
  • 浏览: 261694 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

100个直接可以拿来用的JavaScript实用功能代码片段(二)

    博客分类:
  • JS
阅读更多

31、原生JavaScript判断是否移动设备

复制代码
 1 function isMobile(){
 2     if (typeof this._isMobile === 'boolean'){
 3         return this._isMobile;
 4     }
 5     var screenWidth = this.getScreenWidth();
 6     var fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;
 7     var fixViewPortsExperimentRunning = fixViewPortsExperiment && (fixViewPortsExperiment.toLowerCase() === "new");
 8     if(!fixViewPortsExperiment){
 9         if(!this.isAppleMobileDevice()){
10             screenWidth = screenWidth/window.devicePixelRatio;
11         }
12     }
13     var isMobileScreenSize = screenWidth < 600;
14     var isMobileUserAgent = false;
15     this._isMobile = isMobileScreenSize && this.isTouchScreen();
16     return this._isMobile;
17 }
复制代码

 

32、原生JavaScript判断是否移动设备访问

1 function isMobileUserAgent(){
2     return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));
3 }

 

33、原生JavaScript判断是否苹果移动设备访问

1 function isAppleMobileDevice(){
2     return (/iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()));
3 }

 

34、原生JavaScript判断是否安卓移动设备访问

1 function isAndroidMobileDevice(){
2     return (/android/i.test(navigator.userAgent.toLowerCase()));
3 }

 
35、原生JavaScript判断是否Touch屏幕

1 function isTouchScreen(){
2     return (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);
3 }

 

36、原生JavaScript判断是否在安卓上的谷歌浏览器

复制代码
 1 function isNewChromeOnAndroid(){
 2     if(this.isAndroidMobileDevice()){
 3         var userAgent = navigator.userAgent.toLowerCase();
 4         if((/chrome/i.test(userAgent))){
 5             var parts = userAgent.split('chrome/');
 6 
 7             var fullVersionString = parts[1].split(" ")[0];
 8             var versionString = fullVersionString.split('.')[0];
 9             var version = parseInt(versionString);
10 
11             if(version >= 27){
12                 return true;
13             }
14         }
15     }
16     return false;
17 }
复制代码

 
37、原生JavaScript判断是否打开视窗

1 function isViewportOpen() {
2     return !!document.getElementById('wixMobileViewport');
3 }

 


38、原生JavaScript获取移动设备初始化大小

复制代码
 1 function getInitZoom(){
 2     if(!this._initZoom){
 3         var screenWidth = Math.min(screen.height, screen.width);
 4         if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){
 5             screenWidth = screenWidth/window.devicePixelRatio;
 6         }
 7         this._initZoom = screenWidth /document.body.offsetWidth;
 8     }
 9     return this._initZoom;
10 }
复制代码

 


39、原生JavaScript获取移动设备最大化大小

复制代码
 1 function getZoom(){
 2     var screenWidth = (Math.abs(window.orientation) === 90) ? Math.max(screen.height, screen.width) : Math.min(screen.height, screen.width);
 3     if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){
 4         screenWidth = screenWidth/window.devicePixelRatio;
 5     }
 6     var FixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;
 7     var FixViewPortsExperimentRunning = FixViewPortsExperiment && (FixViewPortsExperiment === "New" || FixViewPortsExperiment === "new");
 8     if(FixViewPortsExperimentRunning){
 9         return screenWidth / window.innerWidth;
10     }else{
11         return screenWidth / document.body.offsetWidth;
12     }
13 }
复制代码

 


40、原生JavaScript获取移动设备屏幕宽度

复制代码
 1 function getScreenWidth(){
 2     var smallerSide = Math.min(screen.width, screen.height);
 3     var fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;
 4     var fixViewPortsExperimentRunning = fixViewPortsExperiment && (fixViewPortsExperiment.toLowerCase() === "new");
 5     if(fixViewPortsExperiment){
 6         if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){
 7             smallerSide = smallerSide/window.devicePixelRatio;
 8         }
 9     }
10     return smallerSide;
11 }
复制代码

 


41、原生JavaScript完美判断是否为网址

复制代码
1 function IsURL(strUrl) {
2     var regular = /^\b(((https?|ftp):\/\/)?[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|aero|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:\@&?=+,.!\/~%\$]*)?)$/i
3     if (regular.test(strUrl)) {
4         return true;
5     }
6     else {
7         return false;
8     }
9 }
复制代码

 


42、原生JavaScript根据样式名称检索元素对象

复制代码
 1 function getElementsByClassName(name) {
 2     var tags = document.getElementsByTagName('*') || document.all;
 3     var els = [];
 4     for (var i = 0; i < tags.length; i++) {
 5         if (tags[i].className) {
 6             var cs = tags[i].className.split(' ');
 7             for (var j = 0; j < cs.length; j++) {
 8                 if (name == cs[j]) {
 9                     els.push(tags[i]);
10                     break
11                 }
12             }
13         }
14     }
15     return els
16 }
复制代码

 

43、原生JavaScript判断是否以某个字符串开头

1 String.prototype.startWith = function (s) {
2     return this.indexOf(s) == 0
3 }

 
44、原生JavaScript判断是否以某个字符串结束

1 String.prototype.endWith = function (s) {
2     var d = this.length - s.length;
3     return (d >= 0 && this.lastIndexOf(s) == d)
4 }

 


45、原生JavaScript返回IE浏览器的版本号

复制代码
1 function getIE(){
2     if (window.ActiveXObject){
3         var v = navigator.userAgent.match(/MSIE ([^;]+)/)[1];
4         return parseFloat(v.substring(0, v.indexOf(".")))
5     }
6     return false
7 }
复制代码

 


46、原生JavaScript获取页面高度

1 function getPageHeight(){
2     var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat"
3             ? a
4             : g.documentElement;
5     return Math.max(f.scrollHeight, a.scrollHeight, d.clientHeight);
6 }

 


47、原生JavaScript获取页面scrollLeft

1 function getPageScrollLeft(){
2     var a = document;
3     return a.documentElement.scrollLeft || a.body.scrollLeft;
4 }

 


48、原生JavaScript获取页面可视宽度

1 function getPageViewWidth(){
2     var d = document, a = d.compatMode == "BackCompat"
3             ? d.body
4             : d.documentElement;
5     return a.clientWidth;
6 }

 


49、原生JavaScript获取页面宽度

1 function getPageWidth(){
2     var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat"
3             ? a
4             : g.documentElement;
5     return Math.max(f.scrollWidth, a.scrollWidth, d.clientWidth);
6 }

 


50、原生JavaScript获取页面scrollTop

1 function getPageScrollTop(){
2     var a = document;
3     return a.documentElement.scrollTop || a.body.scrollTop;
4 }

 


51、原生JavaScript获取页面可视高度

1 function getPageViewHeight() {
2     var d = document, a = d.compatMode == "BackCompat"
3             ? d.body
4             : d.documentElement;
5     return a.clientHeight;
6 }

 


52、原生JavaScript跨浏览器添加事件

复制代码
 1 function addEvt(oTarget,sEvtType,fnHandle){
 2     if(!oTarget){return;}
 3     if(oTarget.addEventListener){
 4         oTarget.addEventListener(sEvtType,fnHandle,false);
 5     }else if(oTarget.attachEvent){
 6         oTarget.attachEvent("on" + sEvtType,fnHandle);
 7     }else{
 8         oTarget["on" + sEvtType] = fnHandle;
 9     }
10 }
复制代码

 


53、原生JavaScript跨浏览器删除事件

复制代码
 1 function delEvt(oTarget,sEvtType,fnHandle){
 2     if(!oTarget){return;}
 3     if(oTarget.addEventListener){
 4         oTarget.addEventListener(sEvtType,fnHandle,false);
 5     }else if(oTarget.attachEvent){
 6         oTarget.attachEvent("on" + sEvtType,fnHandle);
 7     }else{
 8         oTarget["on" + sEvtType] = fnHandle;
 9     }
10 }
复制代码

 


54、原生JavaScript去掉url前缀

复制代码
1 function removeUrlPrefix(a){
2   a=a.replace(/:/g,":").replace(/./g,".").replace(///g,"/");
3   while(trim(a).toLowerCase().indexOf("http://")==0){
4     a=trim(a.replace(/http:\/\//i,""));
5   }
6   return a;
7 }
复制代码

 


55、原生JavaScript随机数时间戳

1 function uniqueId(){
2     var a=Math.random,b=parseInt;
3     return Number(new Date()).toString()+b(10*a())+b(10*a())+b(10*a());
4 }

 


56、原生JavaScript全角半角转换,iCase: 0全到半,1半到全,其他不转化

复制代码
 1 function chgCase(sStr,iCase){
 2     if(typeof sStr != "string" || sStr.length <= 0 || !(iCase === 0 || iCase == 1)){
 3         return sStr;
 4     }
 5     var i,oRs=[],iCode;
 6     if(iCase){/*半->全*/
 7         for(i=0; i<sStr.length;i+=1){ 
 8             iCode = sStr.charCodeAt(i);
 9             if(iCode == 32){
10                 iCode = 12288;                
11             }else if(iCode < 127){
12                 iCode += 65248;
13             }
14             oRs.push(String.fromCharCode(iCode)); 
15         }        
16     }else{/*全->半*/
17         for(i=0; i<sStr.length;i+=1){ 
18             iCode = sStr.charCodeAt(i);
19             if(iCode == 12288){
20                 iCode = 32;
21             }else if(iCode > 65280 && iCode < 65375){
22                 iCode -= 65248;                
23             }
24             oRs.push(String.fromCharCode(iCode)); 
25         }        
26     }        
27     return oRs.join("");        
28 }
复制代码

 


57、原生JavaScript确认是否键盘有效输入值

复制代码
 1 function checkKey(iKey){
 2     if(iKey == 32 || iKey == 229){return true;}/*空格和异常*/
 3     if(iKey>47 && iKey < 58){return true;}/*数字*/
 4     if(iKey>64 && iKey < 91){return true;}/*字母*/
 5     if(iKey>95 && iKey < 108){return true;}/*数字键盘1*/
 6     if(iKey>108 && iKey < 112){return true;}/*数字键盘2*/
 7     if(iKey>185 && iKey < 193){return true;}/*符号1*/
 8     if(iKey>218 && iKey < 223){return true;}/*符号2*/
 9     return false;
10 }
复制代码

 


58、原生JavaScript获取网页被卷去的位置

复制代码
1 function getScrollXY() {
2     return document.body.scrollTop ? {
3         x: document.body.scrollLeft,
4         y: document.body.scrollTop
5     }: {
6         x: document.documentElement.scrollLeft,
7         y: document.documentElement.scrollTop
8     }
9 }
复制代码

 


59、原生JavaScript另一种正则日期格式化函数+调用方法

复制代码
 1 Date.prototype.format = function(format){ //author: meizz
 2   var o = {
 3     "M+" : this.getMonth()+1, //month
 4     "d+" : this.getDate(),    //day
 5     "h+" : this.getHours(),   //hour
 6     "m+" : this.getMinutes(), //minute
 7     "s+" : this.getSeconds(), //second
 8     "q+" : Math.floor((this.getMonth()+3)/3),  //quarter
 9     "S" : this.getMilliseconds() //millisecond
10   }
11   if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
12     (this.getFullYear()+"").substr(4 - RegExp.$1.length));
13   for(var k in o)if(new RegExp("("+ k +")").test(format))
14     format = format.replace(RegExp.$1,
15       RegExp.$1.length==1 ? o[k] :
16         ("00"+ o[k]).substr((""+ o[k]).length));
17   return format;
18 }
19 alert(new Date().format("yyyy-MM-dd hh:mm:ss"));
复制代码

 


60、原生JavaScript时间个性化输出功能

复制代码
 1 /*
 2 1、< 60s, 显示为“刚刚”
 3 2、>= 1min && < 60 min, 显示与当前时间差“XX分钟前”
 4 3、>= 60min && < 1day, 显示与当前时间差“今天 XX:XX”
 5 4、>= 1day && < 1year, 显示日期“XX月XX日 XX:XX”
 6 5、>= 1year, 显示具体日期“XXXX年XX月XX日 XX:XX”
 7  */
 8 function timeFormat(time){
 9   var date = new Date(time)
10     , curDate = new Date()
11     , year = date.getFullYear()
12     , month = date.getMonth() + 1
13     , day = date.getDate()
14     , hour = date.getHours()
15     , minute = date.getMinutes()
16     , curYear = curDate.getFullYear()
17     , curHour = curDate.getHours()
18     , timeStr;
19 
20   if(year < curYear){
21     timeStr = year +'年'+ month +'月'+ day +'日 '+ hour +':'+ minute;
22   }else{
23     var pastTime = curDate - date
24       , pastH = pastTime/3600000;
25 
26     if(pastH > curHour){
27       timeStr = month +'月'+ day +'日 '+ hour +':'+ minute;
28     }else if(pastH >= 1){
29       timeStr = '今天 ' + hour +':'+ minute +'分';
30     }else{
31       var pastM = curDate.getMinutes() - minute;
32       if(pastM > 1){
33         timeStr = pastM +'分钟前';
34       }else{
35         timeStr = '刚刚';
36       }
37     }
38   }
39   return timeStr;
40 }
复制代码

 


61、原生JavaScript解决offsetX兼容性问题

复制代码
 1 // 针对火狐不支持offsetX/Y
 2 function getOffset(e){
 3   var target = e.target, // 当前触发的目标对象
 4       eventCoord,
 5       pageCoord,
 6       offsetCoord;
 7 
 8   // 计算当前触发元素到文档的距离
 9   pageCoord = getPageCoord(target);
10 
11   // 计算光标到文档的距离
12   eventCoord = {
13     X : window.pageXOffset + e.clientX,
14     Y : window.pageYOffset + e.clientY
15   };
16 
17   // 相减获取光标到第一个定位的父元素的坐标
18   offsetCoord = {
19     X : eventCoord.X - pageCoord.X,
20     Y : eventCoord.Y - pageCoord.Y
21   };
22   return offsetCoord;
23 }
24 
25 function getPageCoord(element){
26   var coord = { X : 0, Y : 0 };
27   // 计算从当前触发元素到根节点为止,
28   // 各级 offsetParent 元素的 offsetLeft 或 offsetTop 值之和
29   while (element){
30     coord.X += element.offsetLeft;
31     coord.Y += element.offsetTop;
32     element = element.offsetParent;
33   }
34   return coord;
35 }
复制代码

 


62、原生JavaScript常用的正则表达式

复制代码
 1 //正整数
 2 /^[0-9]*[1-9][0-9]*$/;
 3 //负整数
 4 /^-[0-9]*[1-9][0-9]*$/;
 5 //正浮点数
 6 /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;   
 7 //负浮点数
 8 /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;  
 9 //浮点数
10 /^(-?\d+)(\.\d+)?$/;
11 //email地址
12 /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
13 //url地址
14 /^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/;
15 //年/月/日(年-月-日、年.月.日)
16 /^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/;
17 //匹配中文字符
18 /[\u4e00-\u9fa5]/;
19 //匹配帐号是否合法(字母开头,允许5-10字节,允许字母数字下划线)
20 /^[a-zA-Z][a-zA-Z0-9_]{4,9}$/;
21 //匹配空白行的正则表达式
22 /\n\s*\r/;
23 //匹配中国邮政编码
24 /[1-9]\d{5}(?!\d)/;
25 //匹配身份证
26 /\d{15}|\d{18}/;
27 //匹配国内电话号码
28 /(\d{3}-|\d{4}-)?(\d{8}|\d{7})?/;
29 //匹配IP地址
30 /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/;
31 //匹配首尾空白字符的正则表达式
32 /^\s*|\s*$/;
33 //匹配HTML标记的正则表达式
34 < (\S*?)[^>]*>.*?|< .*? />;
复制代码

 


63、原生JavaScript实现返回顶部的通用方法

复制代码
 1 function backTop(btnId) {
 2     var btn = document.getElementById(btnId);
 3     var d = document.documentElement;
 4     var b = document.body;
 5     window.onscroll = set;
 6     btn.style.display = "none";
 7     btn.onclick = function() {
 8         btn.style.display = "none";
 9         window.onscroll = null;
10         this.timer = setInterval(function() {
11             d.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
12             b.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
13             if ((d.scrollTop + b.scrollTop) == 0) clearInterval(btn.timer, window.onscroll = set);
14         },
15         10);
16     };
17     function set() {
18         btn.style.display = (d.scrollTop + b.scrollTop > 100) ? 'block': "none"
19     }
20 };
21 backTop('goTop');
复制代码

 


64、原生JavaScript获得URL中GET参数值

复制代码
 1 // 用法:如果地址是 test.htm?t1=1&t2=2&t3=3, 那么能取得:GET["t1"], GET["t2"], GET["t3"]
 2 function get_get(){ 
 3   querystr = window.location.href.split("?")
 4   if(querystr[1]){
 5     GETs = querystr[1].split("&")
 6     GET =new Array()
 7     for(i=0;i<GETs.length;i++){
 8       tmp_arr = GETs[i].split("=")
 9       key=tmp_arr[0]
10       GET[key] = tmp_arr[1]
11     }
12   }
13   return querystr[1];
14 }
复制代码

 


65、原生JavaScript实现全选通用方法

复制代码
1 function checkall(form, prefix, checkall) {
2     var checkall = checkall ? checkall : 'chkall';
3     for(var i = 0; i < form.elements.length; i++) {
4         var e = form.elements[i];
5         if(e.type=="checkbox"){
6             e.checked = form.elements[checkall].checked;
7         }
8     }
9 }
复制代码

 


66、原生JavaScript实现全部取消选择通用方法

复制代码
1 function uncheckAll(form) {
2     for (var i=0;i<form.elements.length;i++){
3         var e = form.elements[i];
4         if (e.name != 'chkall')
5         e.checked=!e.checked;
6     }
7 }
复制代码

 


67、原生JavaScript实现打开一个窗体通用方法

复制代码
 1 function openWindow(url,windowName,width,height){
 2     var x = parseInt(screen.width / 2.0) - (width / 2.0); 
 3     var y = parseInt(screen.height / 2.0) - (height / 2.0);
 4     var isMSIE= (navigator.appName == "Microsoft Internet Explorer");
 5     if (isMSIE) {
 6         var p = "resizable=1,location=no,scrollbars=no,width=";
 7         p = p+width;
 8         p = p+",height=";
 9         p = p+height;
10         p = p+",left=";
11         p = p+x;
12         p = p+",top=";
13         p = p+y;
14         retval = window.open(url, windowName, p);
15     } else {
16         var win = window.open(url, "ZyiisPopup", "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,modal=yes,width=" + width + ",height=" + height + ",resizable=no" );
17         eval("try { win.resizeTo(width, height); } catch(e) { }");
18         win.focus();
19     }
20 }
复制代码

 


68、原生JavaScript判断是否为客户端设备

复制代码
 1 function client(o){    
 2        var b = navigator.userAgent.toLowerCase();   
 3        var t = false;
 4        if (o == 'isOP'){
 5              t = b.indexOf('opera') > -1;
 6        }
 7        if (o == 'isIE'){
 8              t = b.indexOf('msie') > -1;
 9        }
10        if (o == 'isFF'){
11              t = b.indexOf('firefox') > -1;
12        }
13        return t;
14 }
复制代码

 


69、原生JavaScript获取单选按钮的值

复制代码
 1 function get_radio_value(field){
 2     if(field&&field.length){    
 3         for(var i=0;i<field.length;i++){        
 4             if(field[i].checked){            
 5                 return field[i].value;                                
 6             }            
 7         }        
 8     }else {        
 9         return ;                
10     }    
11 }
复制代码

 


70、原生JavaScript获取复选框的值

复制代码
 1 function get_checkbox_value(field){    
 2     if(field&&field.length){    
 3         for(var i=0;i<field.length;i++){            
 4             if(field[i].checked && !field[i].disabled){
 5                 return field[i].value;
 6             }
 7         }        
 8     }else {
 9         return;
10     }            
11 }
复制代码

100个直接可以拿来用的JavaScript实用功能代码片段(三) 

分享到:
评论
2 楼 NO.6 2013-09-13  
谢啦,先收了!
1 楼 tjzx 2013-09-12  
非常实用,非常赞

相关推荐

Global site tag (gtag.js) - Google Analytics