工作需要而寫的 Javascript 常用方法【一】

瀏覽器與系統判斷
var  myDccMacFW  =  {
    
/* 判斷瀏覽器 */
    uaMatch: 
function  (ua) {
        ua 
=  ua.toLowerCase();
        
var  match  =   / (webkit)[ \/]([\w.]+) / .exec(ua)  ||
        
/ (opera)(?:.*version)?[ \/]([\w.]+) / .exec(ua)  ||
        
/ (msie) ([\w.]+) / .exec(ua)  ||
        
! / compatible / .test(ua)  &&   / (mozilla)(?:.*? rv:([\w.]+))? / .exec(ua)  ||
        [];
        
var  matchOS  =   / (mac)[\sOSos]+ / .exec(ua)  ||   / (win)dows / gi.exec(ua)  ||  [];
        
return  { browser: match[ 1 ||   "" , version: match[ 2 ||   " 0 " , os: matchOS[ 1 ||   ""  };
    },
    browser: {},
    operaSystem: {}

};

(
function  ($) { // 想利用VS的格式化(ctrl+E && ctrl+D),要將“(function ($)”之間的空格去掉才行;
     /* 執行瀏覽器判斷
    *IE: myDccMacFW.browser.msie:bool
    *FF: myDccMacFW.browser.mozilla:bool
    *chrome,safari: myDccMacFW.browser.webkit:bool
    *opera: myDccMacFW.browser.opera:bool
    ** operaSystem
    *  myDccMacFW.operaSystem.win || myDccMacFW.operaSystem.mac
    
*/
    
var  browserMatch  =  $.uaMatch(navigator.userAgent);
    
if  (browserMatch.browser) {
        $.browser[browserMatch.browser] 
=   true ;
        $.operaSystem[browserMatch.os] 
=   true ;
        $.browser.version 
=  browserMatch.version;
    }

})(myDccMacFW); 

 

 

// 注:內置原型的prototype是只讀;
/*

*不帶任何一個參數都將全部字符來計算;
*len:int            要計算的長度,以中文長度計
*callback:function    callback(a,b,isSubstr)=>表示在參數len長度之中,a為英文長度,b為中文長度,isSubstr為是否截字了
*計算字符串中文長度,如“abc[d]我”長度為3,而“ef你”長度為2
*/
String.prototype.CounCN 
=   function  (len, callback) {
    
var  a  =  b  =   0 , _isSubstr  =   false ;
    
for  (i  =   0 ; i  <   this .length; i ++ ) {
        
if  ( this .charCodeAt(i)  <   128 ) { // 一字節,如字母,數字,英文符號 etc..
            a ++ ;
        }
        
else
            b
++ ;
        
if  (len  &&  callback)
            
if  (a  +  b  *   2   >=  len  *   2 ) {
                
if  (a  +  b  *   2   >  len  *   2 ) {
                    a
-- ;
                }
                _isSubstr 
=   this .length  >  a  +  b;
                
break ;
            }
    }
    
if  (callback)
        callback(a, b, _isSubstr);
    
return  Math.ceil((a  +  b  *   2 /   2 );
}
/*
截取字符串長度(漢字當兩個字符計算),如“abc[d]我”長度為3,而“ef你”長度為2
*len:int 要截取的長度,以中文長度計
*ext:string 表示長度過長時要追加的字符,默認為空;
*調用如:alert("0102030405060708091我".dccSubstr(10,"..."));
*/
String.prototype.dccSubstr 
=   function  (len, ext) {
    
var  _a  =  _b  =   0 , _isSubstr  =   false ;
    
this .CounCN(len,  function  (a, b, isSubstr) { _a  =  a, _b  =  b, _isSubstr  =  isSubstr; });
    
if  (_isSubstr)
        
return   this .substr( 0 , (_a  +  _b))  +  (ext  ||   "" );
    
else   return   this .substr( 0 , (_a  +  _b));

你可能感兴趣的:(JavaScript)