主頁 > 前端設計 > javascript常用函式

javascript常用函式

2021-10-14 08:24:06 前端設計

這里寫自定義目錄標題

  • 實作字串長度截
  • 獲取域名主機
  • 清除空格
  • 替換全部
  • 轉義html標簽
  • 生JavaScript還原html標簽
  • 時間日期格式轉換
  • 判斷是否為數字型別
  • 設定cookie值
  • 判斷IE6
  • 加載樣式檔案
  • 回傳腳本內容
  • 清除腳本內容
  • 動態加載腳本檔案
  • 回傳按ID檢索的元素物件
  • 回傳瀏覽器版本內容
  • 元素顯示的通用方法
  • 中兼容瀏覽器系結元素事件
  • 游標停在文字的后面,文本框獲得焦點時呼叫
  • 檢驗URL鏈接是否有效
  • 格式化CSS樣式代碼
  • 壓縮CSS樣式代碼
  • 獲取當前路徑
  • IP轉成整型
  • 整型決議為IP地址
  • 實作checkbox全選與全不選
  • 判斷是否移動設備
  • 判斷是否移動設備訪問
  • 判斷是否蘋果移動設備訪問
  • 判斷是否安卓移動設備訪問
  • 判斷是否Touch螢屏
  • 判斷是否在安卓上的谷歌瀏覽器
  • 判斷是否打開視窗
  • 獲取移動設備初始化大小
  • 獲取移動設備最大化大小
  • 獲取移動設備螢屏寬度
  • 完美判斷是否為網址
  • 根據樣式名稱檢索元素物件
  • 判斷是否以某個字串開頭
  • 判斷是否以某個字串結束
  • 回傳IE瀏覽器的版本號
  • 獲取頁面高度
  • 獲取頁面scrollLeft
  • 獲取頁面可視寬度
  • 獲取頁面寬度
  • 獲取頁面scrollTop
  • 獲取頁面可視高度
  • 跨瀏覽器添加事件
  • 跨瀏覽器洗掉事件
  • 去掉url前綴
  • 亂數時間戳
  • 全角半角轉換,iCase: 0全到半,1半到全,其他不轉化
  • 確認是否鍵盤有效輸入值
  • 獲取網頁被卷去的位置
  • 另一種正則日期格式化函式+呼叫方法
  • 時間個性化輸出功能
  • 解決offsetX兼容性問題
  • 常用的正則運算式
  • 實作回傳頂部的通用方法
  • 獲得URL中GET引數值
  • 實作全選通用方法
  • 實作全部取消選擇通用方法
  • 實作打開一個表單通用方法
  • 判斷是否為客戶端設備
  • 獲取單選按鈕的值
  • 獲取復選框的值
  • 判斷是否為郵箱
  • 判斷是否有串列中的危險字符
  • 判斷字串是否大于規定的長度
  • 判斷字串是為網址不區分大小寫
  • 判斷字串是否為小數
  • 判斷字串是否為整數
  • 判斷字串是否為浮點數
  • 判斷字符是否為A-Za-z英文字母
  • 判斷字串是否郵政編碼
  • 判斷字符是否空NULL
  • 用正則運算式提取頁面代碼中所有網址
  • 用正則運算式清除相同的陣列(低效率)
  • 用正則運算式按字母排序,對每行進行陣列排序
  • 字串反序
  • 用正則運算式清除html代碼中的腳本
  • 動態執行JavaScript腳本
  • 動態執行VBScript腳本
  • 實作金額大寫轉換函式
  • 常用的正則運算式大收集
  • 實作表單改變事件resize的操作
    • 兼容所以的瀏覽器
  • 用正則清除空格分左右
  • 判斷變數是否空值
  • 實作base64解碼
  • 實作utf8解碼
  • 獲取表單可見范圍的寬與高
  • 判斷IE版本號
  • 獲取瀏覽器版本號
  • 全角轉換為半角函式

實作字串長度截

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 + "..."
    }

獲取域名主機

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;
}

清除空格

String.prototype.trim = function() {
   var reExtraSpace = /^\s*(.*?)\s+$/;
   return this.replace(reExtraSpace, "$1")
}

替換全部

    String.prototype.replaceAll = function(s1, s2) {
        return this.replace(new RegExp(s1, "gm"), s2)
    }

轉義html標簽

function HtmlEncode(text) {
        return text.replace(/&/g, '&').replace(/\"/g, '"').replace(/, '<').replace(/>/g, '>')
    }

生JavaScript還原html標簽

function HtmlDecode(text) {
   return text.replace(/&/g, '&').replace(/"/g, '\"').replace(/, '<').replace(/>/g, '>')
}

時間日期格式轉換

Date.prototype.Format = function(formatStr) {
        var str = formatStr;
        var Week = ['日', '一', '二', '三', '四', '五', '六'];
        str = str.replace(/yyyy|YYYY/, this.getFullYear());
        str = str.replace(/yy|YY/, (this.getYear() % 100) > 9 ? (this.getYear() % 100).toString() : '0' + (this.getYear() % 100));
        str = str.replace(/MM/, (this.getMonth() + 1) > 9 ? (this.getMonth() + 1).toString() : '0' + (this.getMonth() + 1));
        str = str.replace(/M/g, (this.getMonth() + 1));
        str = str.replace(/w|W/g, Week[this.getDay()]);
        str = str.replace(/dd|DD/, this.getDate() > 9 ? this.getDate().toString() : '0' + this.getDate());
        str = str.replace(/d|D/g, this.getDate());
        str = str.replace(/hh|HH/, this.getHours() > 9 ? this.getHours().toString() : '0' + this.getHours());
        str = str.replace(/h|H/g, this.getHours());
        str = str.replace(/mm/, this.getMinutes() > 9 ? this.getMinutes().toString() : '0' + this.getMinutes());
        str = str.replace(/m/g, this.getMinutes());
        str = str.replace(/ss|SS/, this.getSeconds() > 9 ? this.getSeconds().toString() : '0' + this.getSeconds());
        str = str.replace(/s|S/g, this.getSeconds());
        return str
    }

判斷是否為數字型別

function isDigit(value) {
        var patrn = /^[0-9]*$/;
        if (patrn.exec(value) == null || value == "") {
            return false
        } else {
            return true
        }
    }

設定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;"
    }

#獲取cookie值

function getCookie(name) {
     var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
     if (arr != null) return unescape(arr[2]);
     return null
 }

#加入收藏夾

function AddFavorite(sURL, sTitle) {
        try {
            window.external.addFavorite(sURL, sTitle)
        } catch(e) {
            try {
                window.sidebar.addPanel(sTitle, sURL, "")
            } catch(e) {
                alert("加入收藏失敗,請使用Ctrl+D進行添加")
            }
        }
    }

#設為首頁

function setHomepage() {
        if (document.all) {
            document.body.style.behavior = 'url(#default#homepage)';
            document.body.setHomePage('http://***')
        } 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://***')
        }
    }

判斷IE6

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

加載樣式檔案

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)
        }
    }

回傳腳本內容

function evalscript(s) {
        if(s.indexOf('<script'< span>) == -1) return s;
        var p = /]*?>([^\x00]*?)<\ script="">/ig;
        var arr = [];
        while(arr = p.exec(s)) {
            var p1 = /]*?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 = /;
                arr1 = p1.exec(arr[0]);
                appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);
            }
        }
        return s;
    }

清除腳本內容

function stripscript(s) {
    return s.replace(/, '');
 }

動態加載腳本檔案

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) {}
    }

回傳按ID檢索的元素物件

 function $(id) {
         return !id ? null : document.getElementById(id);
     }

回傳瀏覽器版本內容

function browserVersion(types) {
        var other = 1;
        for(i in types) {
            var v = types[i] ? types[i] : i;
            if(USERAGENT.indexOf(v) != -1) {
                var re = new RegExp(v + '(\\/|\\s)([\\d\\.]+)', 'ig');
                var matches = re.exec(USERAGENT);
                var ver = matches != null ? matches[2] : 0;
                other = ver !== 0 && v != 'mozilla' ? 0 : other;
            }else {
                var ver = 0;
            }
            eval('BROWSER.' + i + '= ver');
        }
        BROWSER.other = other;
    }

元素顯示的通用方法

function $(id) {
        return !id ? null : document.getElementById(id);
    }
    function display(id) {
        var obj = $(id);
        if(obj.style.visibility) {
            obj.style.visibility = obj.style.visibility == 'visible' ? 'hidden' : 'visible';
        } else {
            obj.style.display = obj.style.display == '' ? 'none' : '';
        }
    }
中有insertBefore方法,可惜卻沒有insertAfter方法?用如下函式實作
function insertAfter(newChild,refChild){ 
    var parElem=refChild.parentNode; 
    if(parElem.lastChild==refChild){ 
        refChild.appendChild(newChild); 
    }else{ 
        parElem.insertBefore(newChild,refChild.nextSibling); 
    } 
}

中兼容瀏覽器系結元素事件

function addEventSamp(obj,evt,fn){ 
    if (obj.addEventListener) { 
        obj.addEventListener(evt, fn, false); 
    }else if(obj.attachEvent){ 
        obj.attachEvent('on'+evt,fn); 
    } 
}

游標停在文字的后面,文本框獲得焦點時呼叫

function focusLast(){ 
    var e = event.srcElement; 
    var r =e.createTextRange(); 
    r.moveStart('character',e.value.length); 
    r.collapse(true); 
    r.select(); 
}

檢驗URL鏈接是否有效

function getUrlState(URL){ 
    var xmlhttp = new ActiveXObject("microsoft.xmlhttp"); 
    xmlhttp.Open("GET",URL, false);  
    try{  
        xmlhttp.Send(); 
    }catch(e){
    }finally{ 
        var result = xmlhttp.responseText; 
        if(result){ 
            if(xmlhttp.Status==200){ 
                return(true); 
            }else{ 
                return(false); 
            } 
        }else{ 
            return(false); 
        } 
    } 
}

格式化CSS樣式代碼

function formatCss(s){//格式化代碼
    s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");
    s = s.replace(/;\s*;/g, ";"); //清除連續分號
    s = s.replace(/\,[\s\.\#\d]*{/g, "{");
    s = s.replace(/([^\s])\{([^\s])/g, "$1 {\n\t$2");
    s = s.replace(/([^\s])\}([^\n]*)/g, "$1\n}\n$2");
    s = s.replace(/([^\s]);([^\s\}])/g, "$1;\n\t$2");
    return s;
}

壓縮CSS樣式代碼

function yasuoCss (s) {//壓縮代碼
    s = s.replace(/\/\*(.|\n)*?\*\//g, ""); //洗掉注釋
    s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");
    s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); //容錯處理
    s = s.replace(/;\s*;/g, ";"); //清除連續分號
    s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白
    return (s == null) ? "" : s[1];
}

獲取當前路徑

var currentPageUrl = "";
if (typeof this.href === "undefined") {
    currentPageUrl = document.location.toString().toLowerCase();
}
else {
    currentPageUrl = this.href.toString().toLowerCase();
}

IP轉成整型

function _ip2int(ip){
    var num = 0;
    ip = ip.split(".");
    num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]);
    num = num >>> 0;
    return num;
}

整型決議為IP地址

function _int2iP(num){
    var str;
    var tt = new Array();
    tt[0] = (num >>> 24) >>> 0;
    tt[1] = ((num << 8) >>> 24) >>> 0;
    tt[2] = (num << 16) >>> 24;
    tt[3] = (num << 24) >>> 24;
    str = String(tt[0]) + "." + String(tt[1]) + "." + String(tt[2]) + "." + String(tt[3]);
    return str;
}

實作checkbox全選與全不選

function checkAll() {
    var selectall = document.getElementById("selectall");
    var allbox = document.getElementsByName("allbox");
    if (selectall.checked) {
        for (var i = 0; i < allbox.length; i++) {
            allbox[i].checked = true;
        }
    } else {
        for (var i = 0; i < allbox.length; i++) {
            allbox[i].checked = false;
        }
    }
}

判斷是否移動設備

function isMobile(){
    if (typeof this._isMobile === 'boolean'){
        return this._isMobile;
    }
    var screenWidth = this.getScreenWidth();
    var fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;
    var fixViewPortsExperimentRunning = fixViewPortsExperiment && (fixViewPortsExperiment.toLowerCase() === "new");
    if(!fixViewPortsExperiment){
        if(!this.isAppleMobileDevice()){
            screenWidth = screenWidth/window.devicePixelRatio;
        }
    }
    var isMobileScreenSize = screenWidth < 600;
    var isMobileUserAgent = false;
    this._isMobile = isMobileScreenSize && this.isTouchScreen();
    return this._isMobile;
}

判斷是否移動設備訪問

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

判斷是否蘋果移動設備訪問

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

判斷是否安卓移動設備訪問

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

判斷是否Touch螢屏

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

判斷是否在安卓上的谷歌瀏覽器

function isNewChromeOnAndroid(){
    if(this.isAndroidMobileDevice()){
        var userAgent = navigator.userAgent.toLowerCase();
        if((/chrome/i.test(userAgent))){
            var parts = userAgent.split('chrome/');

            var fullVersionString = parts[1].split(" ")[0];
            var versionString = fullVersionString.split('.')[0];
            var version = parseInt(versionString);

            if(version >= 27){
                return true;
            }
        }
    }
    return false;
}

判斷是否打開視窗

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

獲取移動設備初始化大小

function getInitZoom(){
    if(!this._initZoom){
        var screenWidth = Math.min(screen.height, screen.width);
        if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){
            screenWidth = screenWidth/window.devicePixelRatio;
        }
        this._initZoom = screenWidth /document.body.offsetWidth;
    }
    return this._initZoom;
}

獲取移動設備最大化大小

function getZoom(){
    var screenWidth = (Math.abs(window.orientation) === 90) ? Math.max(screen.height, screen.width) : Math.min(screen.height, screen.width);
    if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){
        screenWidth = screenWidth/window.devicePixelRatio;
    }
    var FixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;
    var FixViewPortsExperimentRunning = FixViewPortsExperiment && (FixViewPortsExperiment === "New" || FixViewPortsExperiment === "new");
    if(FixViewPortsExperimentRunning){
        return screenWidth / window.innerWidth;
    }else{
        return screenWidth / document.body.offsetWidth;
    }
}

獲取移動設備螢屏寬度

function getScreenWidth(){
    var smallerSide = Math.min(screen.width, screen.height);
    var fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;
    var fixViewPortsExperimentRunning = fixViewPortsExperiment && (fixViewPortsExperiment.toLowerCase() === "new");
    if(fixViewPortsExperiment){
        if(this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()){
            smallerSide = smallerSide/window.devicePixelRatio;
        }
    }
    return smallerSide;
}

完美判斷是否為網址

function IsURL(strUrl) {
    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
    if (regular.test(strUrl)) {
        return true;
    }
    else {
        return false;
    }
}

根據樣式名稱檢索元素物件

function getElementsByClassName(name) {
    var tags = document.getElementsByTagName('*') || document.all;
    var els = [];
    for (var i = 0; i < tags.length; i++) {
        if (tags[i].className) {
            var cs = tags[i].className.split(' ');
            for (var j = 0; j < cs.length; j++) {
                if (name == cs[j]) {
                    els.push(tags[i]);
                    break
                }
            }
        }
    }
    return els
}

判斷是否以某個字串開頭

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

判斷是否以某個字串結束

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

回傳IE瀏覽器的版本號

function getIE(){
    if (window.ActiveXObject){
        var v = navigator.userAgent.match(/MSIE ([^;]+)/)[1];
        return parseFloat(v.substring(0, v.indexOf(".")))
    }
    return false
}

獲取頁面高度

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

獲取頁面scrollLeft

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

獲取頁面可視寬度

function getPageViewWidth(){
    var d = document, a = d.compatMode == "BackCompat"
            ? d.body
            : d.documentElement;
    return a.clientWidth;
}

獲取頁面寬度

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

獲取頁面scrollTop

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

獲取頁面可視高度

function getPageViewHeight() {
    var d = document, a = d.compatMode == "BackCompat"
            ? d.body
            : d.documentElement;
    return a.clientHeight;
}

跨瀏覽器添加事件

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;
    }
}

跨瀏覽器洗掉事件

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;
    }
}

去掉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;
}

亂數時間戳

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

全角半角轉換,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("");        
}

確認是否鍵盤有效輸入值

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;
}

獲取網頁被卷去的位置

function getScrollXY() {
    return document.body.scrollTop ? {
        x: document.body.scrollLeft,
        y: document.body.scrollTop
    }: {
        x: document.documentElement.scrollLeft,
        y: document.documentElement.scrollTop
    }
}

另一種正則日期格式化函式+呼叫方法

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"));

時間個性化輸出功能

/*
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;
}

解決offsetX兼容性問題

// 針對火狐不支持offsetX/Y
function getOffset(e){
  var target = e.target, // 當前觸發的目標物件
      eventCoord,
      pageCoord,
      offsetCoord;

  // 計算當前觸發元素到檔案的距離
  pageCoord = getPageCoord(target);

  // 計算游標到檔案的距離
  eventCoord = {
    X : window.pageXOffset + e.clientX,
    Y : window.pageYOffset + e.clientY
  };

  // 相級訓取游標到第一個定位的父元素的坐標
  offsetCoord = {
    X : eventCoord.X - pageCoord.X,
    Y : eventCoord.Y - pageCoord.Y
  };
  return offsetCoord;
}

function getPageCoord(element){
  var coord = { X : 0, Y : 0 };
  // 計算從當前觸發元素到根節點為止,
  // 各級 offsetParent 元素的 offsetLeft 或 offsetTop 值之和
  while (element){
    coord.X += element.offsetLeft;
    coord.Y += element.offsetTop;
    element = element.offsetParent;
  }
  return coord;
}

常用的正則運算式

//正整數
/^[0-9]*[1-9][0-9]*$/;
//負整數
/^-[0-9]*[1-9][0-9]*$/;
//正浮點數
/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;   
//負浮點數
/^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;  
//浮點數
/^(-?\d+)(\.\d+)?$/;
//email地址
/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
//url地址
/^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/;
//年/月/日(年-月-日、年.月.日)
/^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/;
//匹配中文字符
/[\u4e00-\u9fa5]/;
//匹配帳號是否合法(字母開頭,允許5-10位元組,允許字母數字下劃線)
/^[a-zA-Z][a-zA-Z0-9_]{4,9}$/;
//匹配空白行的正則運算式
/\n\s*\r/;
//匹配中國郵政編碼
/[1-9]\d{5}(?!\d)/;
//匹配身份證
/\d{15}|\d{18}/;
//匹配國內電話號碼
/(\d{3}-|\d{4}-)?(\d{8}|\d{7})?/;
//匹配IP地址
/((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/;
//匹配首尾空白字符的正則運算式
/^\s*|\s*$/;
//匹配HTML標記的正則運算式
< (\S*?)[^>]*>.*?|< .*? />;

實作回傳頂部的通用方法

function backTop(btnId) {
    var btn = document.getElementById(btnId);
    var d = document.documentElement;
    var b = document.body;
    window.onscroll = set;
    btn.style.display = "none";
    btn.onclick = function() {
        btn.style.display = "none";
        window.onscroll = null;
        this.timer = setInterval(function() {
            d.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
            b.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
            if ((d.scrollTop + b.scrollTop) == 0) clearInterval(btn.timer, window.onscroll = set);
        },
        10);
    };
    function set() {
        btn.style.display = (d.scrollTop + b.scrollTop > 100) ? 'block': "none"
    }
};
backTop('goTop');

獲得URL中GET引數值

// 用法:如果地址是 test.htm?t1=1&t2=2&t3=3, 那么能取得:GET["t1"], GET["t2"], GET["t3"]
function get_get(){ 
  querystr = window.location.href.split("?")
  if(querystr[1]){
    GETs = querystr[1].split("&")
    GET =new Array()
    for(i=0;i<gets.length;i++){
      tmp_arr = GETs[i].split("=")
      key=tmp_arr[0]
      GET[key] = tmp_arr[1]
    }
  }
  return querystr[1];
}

實作全選通用方法

function checkall(form, prefix, checkall) {
    var checkall = checkall ? checkall : 'chkall';
    for(var i = 0; i < form.elements.length; i++) {
        var e = form.elements[i];
        if(e.type=="checkbox"){
            e.checked = form.elements[checkall].checked;
        }
    }
}

實作全部取消選擇通用方法

function uncheckAll(form) {
    for (var i=0;i<form.elements.length;i++){
        var e = form.elements[i];
        if (e.name != 'chkall')
        e.checked=!e.checked;
    }
}

實作打開一個表單通用方法

function openWindow(url,windowName,width,height){
    var x = parseInt(screen.width / 2.0) - (width / 2.0); 
    var y = parseInt(screen.height / 2.0) - (height / 2.0);
    var isMSIE= (navigator.appName == "Microsoft Internet Explorer");
    if (isMSIE) {
        var p = "resizable=1,location=no,scrollbars=no,width=";
        p = p+width;
        p = p+",height=";
        p = p+height;
        p = p+",left=";
        p = p+x;
        p = p+",top=";
        p = p+y;
        retval = window.open(url, windowName, p);
    } else {
        var win = window.open(url, "ZyiisPopup", "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,modal=yes,width=" + width + ",height=" + height + ",resizable=no" );
        eval("try { win.resizeTo(width, height); } catch(e) { }");
        win.focus();
    }
}

判斷是否為客戶端設備

function client(o){    
       var b = navigator.userAgent.toLowerCase();   
       var t = false;
       if (o == 'isOP'){
             t = b.indexOf('opera') > -1;
       }
       if (o == 'isIE'){
             t = b.indexOf('msie') > -1;
       }
       if (o == 'isFF'){
             t = b.indexOf('firefox') > -1;
       }
       return t;
}

獲取單選按鈕的值

function get_radio_value(field){
    if(field&&field.length){    
        for(var i=0;i<field.length;i++){        
            if(field[i].checked){            
                return field[i].value;                                
            }            
        }        
    }else {        
        return ;                
    }    
}

獲取復選框的值

function get_checkbox_value(field){    
    if(field&&field.length){    
        for(var i=0;i<field.length;i++){            
            if(field[i].checked && !field[i].disabled){
                return field[i].value;
            }
        }        
    }else {
        return;
    }            
}

判斷是否為郵箱

function isEmail(str){
    var re=/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/; 
    if (re.test(str) != true) {
        return false;
    }else{
        return true;
    }    
}

判斷是否有串列中的危險字符

function isValidReg(chars){
    var re=/<|>|\[|\]|\{|\}|『|』|※|○|●|◎|§|△|▲|☆|★|◇|◆|□|▼|㊣|﹋|⊕|⊙|〒|ㄅ|ㄆ|ㄇ|ㄈ|ㄉ|ㄊ|ㄋ|ㄌ|ㄍ|ㄎ|ㄏ|ㄐ|ㄑ|ㄒ|ㄓ|ㄔ|ㄕ|ㄖ|ㄗ|ㄘ|ㄙ|ㄚ|ㄛ|ㄜ|ㄝ|ㄞ|ㄟ|ㄢ|ㄣ|ㄤ|ㄥ|ㄦ|ㄧ|ㄨ|ㄩ|■|▄|▆|\*|@|#|\^|\\/;
    if (re.test( chars) == true) {
        return false;
    }else{
        return true;
    }    
}

判斷字串是否大于規定的長度

function isValidLength(chars, len) {
    if (chars.length < len) {
        return false;
    }
    return true;
}

判斷字串是為網址不區分大小寫

function isValidURL( chars ) {
    var re=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(\S+\.\S+)$/;
    if (!isNULL(chars)) {
        chars = jsTrim(chars);
        if (chars.match(re) == null)
            return false;
        else
            return true;
    }
    return false;
}

判斷字串是否為小數

function isValidDecimal( chars ) {
    var re=/^\d*\.?\d{1,2}$/;
    if (chars.match(re) == null)
        return false;
    else
        return true;
}

判斷字串是否為整數

function isNumber( chars ) {
    var re=/^\d*$/;
    if (chars.match(re) == null)
        return false;
    else
        return true;
}

判斷字串是否為浮點數

function isFloat( str ) {
    for(i=0;i<str.length;i++)  {
       if ((str.charAt(i)<"0" || str.charAt(i)>"9")&& str.charAt(i) != '.'){
            return false;
       }
    }
    return true;
}

判斷字符是否為A-Za-z英文字母

function isLetters( str ){
    var re=/^[A-Za-z]+$/;
    if (str.match(re) == null)
        return false;
    else
        return true;
}

判斷字串是否郵政編碼

function isValidPost( chars ) {
    var re=/^\d{6}$/;
    if (chars.match(re) == null)
        return false;
    else
        return true;
}

判斷字符是否空NULL

function isNULL( chars ) {
    if (chars == null)
        return true;
    if (jsTrim(chars).length==0)
        return true;
    return false;
}

用正則運算式提取頁面代碼中所有網址

var aa = document.documentElement.outerHTML.match(/(url\(|src=|href=)[\"\']*([^\"\'\(\)\<\>\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\<\>\[\] ]+)/ig).join("\r\n").replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/igm,"");
alert(aa)

用正則運算式清除相同的陣列(低效率)

1 Array.prototype.unique=function(){
2     return this.reverse().join(",").match(/([^,]+)(?!.*\1)/ig).reverse();
3 }
用正則運算式清除相同的陣列(高效率)
String.prototype.unique=function(){
    var x=this.split(/[\r\n]+/);
    var y='';
    for(var i=0;i<x.length;i++){
        if(!new RegExp("^"+x[i].replace(/([^\w])/ig,"\\$1")+"$","igm").test(y)){
            y+=x[i]+"\r\n"
        }
    }
    return y
}

用正則運算式按字母排序,對每行進行陣列排序

1 function SetSort(){
2     var text=K1.value.split(/[\r\n]/).sort().join("\r\n");//順序
3     var test=K1.value.split(/[\r\n]/).sort().reverse().join("\r\n");//反序
4     K1.value=K1.value!=text?text:test;
5 }

字串反序

1 function IsReverse(text){
2     return text.split('').reverse().join('');
3 }

用正則運算式清除html代碼中的腳本

1 function clear_script(){
2   K1.value=K1.value.replace(/,"");
3 }

動態執行JavaScript腳本

function javascript(){
    try{
      eval(K1.value);
    }catch(e){
        alert(e.message);
    }
}

動態執行VBScript腳本

function vbscript(){
    try{
        var script=document.getElementById("K1").value;
        if(script.trim()=="")return;
        window.execScript('On Error Resume Next \n'+script+'\n If Err.Number<>0 Then \n MsgBox "請輸入正確的VBScript腳本!",48,"腳本錯誤!" \n End If',"vbscript")
    }catch(e){
        alert(e.message);
    }
}

實作金額大寫轉換函式

function transform(tranvalue) {
  try {
    var i = 1;
    var dw2 = new Array("", "萬", "億"); //大單位
    var dw1 = new Array("拾", "佰", "仟"); //小單位
    var dw = new Array("零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖"); //整數部分用
    //以下是小寫轉換成大寫顯示在合計大寫的文本框中     
    //分離整數與小數
    var source = splits(tranvalue);
    var num = source[0];
    var dig = source[1];
    //轉換整數部分
    var k1 = 0; //計小單位
    var k2 = 0; //計大單位
    var sum = 0;
    var str = "";
    var len = source[0].length; //整數的長度
    for (i = 1; i <= len; i++) {
      var n = source[0].charAt(len - i); //取得某個位數上的數字
      var bn = 0;
      if (len - i - 1 >= 0) {
        bn = source[0].charAt(len - i - 1); //取得某個位數前一位上的數字
      }
      sum = sum + Number(n);
      if (sum != 0) {
        str = dw[Number(n)].concat(str); //取得該數字對應的大寫數字,并插入到str字串的前面
        if (n == '0') sum = 0;
      }
      if (len - i - 1 >= 0) { //在數字范圍內
        if (k1 != 3) { //加小單位
          if (bn != 0) {
            str = dw1[k1].concat(str);
          }
          k1++;
        } else { //不加小單位,加大單位
          k1 = 0;
          var temp = str.charAt(0);
          if (temp == "萬" || temp == "億") //若大單位前沒有數字則舍去大單位
          str = str.substr(1, str.length - 1);
          str = dw2[k2].concat(str);
          sum = 0;
        }
      }
      if (k1 == 3) //小單位到千則大單位進一
      {
        k2++;
      }
    }
    //轉換小數部分
    var strdig = "";
    if (dig != "") {
      var n = dig.charAt(0);
      if (n != 0) {
        strdig += dw[Number(n)] + "角"; //加數字
      }
      var n = dig.charAt(1);
      if (n != 0) {
        strdig += dw[Number(n)] + "分"; //加數字
      }
    }
    str += "元" + strdig;
  } catch(e) {
    return "0元";
  }
  return str;
}
//拆分整數與小數
function splits(tranvalue) {
  var value = new Array('', '');
  temp = tranvalue.split(".");
  for (var i = 0; i < temp.length; i++) {
    value[i] = temp[i];
  }
  return value;
}

常用的正則運算式大收集

匹配中文字符的正則運算式: [\u4e00-\u9fa5] 
匹配雙位元組字符(包括漢字在內):[^\x00-\xff] 
匹配空行的正則運算式:\n[\s| ]*\r
匹配 HTML 標記的正則運算式:<(.*)>.*<\/\1>|<(.*)>
匹配首尾空格的正則運算式:(^\s*)|(\s*$) 
匹配 IP 地址的正則運算式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g
匹配 Email 地址的正則運算式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配網址 URL 的正則運算式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
sql 陳述句:^(select|drop|delete|create|update|insert).*$ 
非負整數:^\d+$ 
正整數:^[0-9]*[1-9][0-9]*$ 
非正整數:^((-\d+)|(0+))$ 
負整數:^-[0-9]*[1-9][0-9]*$ 
整數:^-?\d+$ 
非負浮點數:^\d+(\.\d+)?$ 
正浮點數:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ 
非正浮點數:^((-\d+\.\d+)?)|(0+(\.0+)?))$ 
英文字串:^[A-Za-z]+$ 
英文大寫串:^[A-Z]+$ 
英文小寫串:^[a-z]+$ 
英文字符數字串:^[A-Za-z0-9]+$ 
英數字加下劃線串:^\w+$ 
E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ 
URL^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$ 或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$ 
郵政編碼:^[1-9]\d{5}$ 
電話號碼:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$ 
手機號碼:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$ 
雙位元組字符(包括漢字在內):^\x00-\xff
匹配首尾空格:(^\s*)|(\s*$)
匹配 HTML 標記:<(.*)>.*<\/\1>|<(.*)> 
匹配空行:\n[\s| ]*\r
提取資訊中的網路鏈接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)? 
提取資訊中的郵件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
提取資訊中的圖片鏈接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)? 
提取資訊中的 IP 地址:(\d+)\.(\d+)\.(\d+)\.(\d+) 
提取資訊中的中國手機號碼:(86)*0*13\d{9} 
提取資訊中的中國固定電話號碼:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8} 
提取資訊中的中國電話號碼(包括移動和固定電話):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14} 
提取資訊中的中國郵政編碼:[1-9]{1}(\d+){5} 
提取資訊中的浮點數(即小數):(-?\d*)\.?\d+ 
提取資訊中的任何數字 (-?\d*)(\.\d+)?
IP(\d+)\.(\d+)\.(\d+)\.(\d+) 
電話區號:^0\d{2,3}$
騰訊 QQ 號:^[1-9]*[1-9][0-9]*$ 
帳號(字母開頭,允許 5-16 位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
中文、英文、數字及下劃線:^[\u4e00-\u9fa5_a-zA-Z0-9]+$

實作表單改變事件resize的操作

兼容所以的瀏覽器

(function(){
    var fn = function(){
        var w = document.documentElement ? document.documentElement.clientWidth : document.body.clientWidth
            ,r = 1255
            ,b = Element.extend(document.body)
            ,classname = b.className;
        if(w < r){
            //當表單的寬度小于1255的時候執行相應的操作
        }else{
            //當表單的寬度大于1255的時候執行相應的操作
        }
    }
    if(window.addEventListener){
        window.addEventListener('resize', function(){ fn(); });
    }else if(window.attachEvent){
        window.attachEvent('onresize', function(){ fn(); });
    }
    fn();
})();

用正則清除空格分左右

1 function ltrim(s){ return s.replace( /^(\s*| *)/, ""); } 
2 function rtrim(s){ return s.replace( /(\s*| *)$/, ""); } 
3 function trim(s){ return ltrim(rtrim(s));} 

判斷變數是否空值

/**
 * 判斷變數是否空值
 * undefined, null, '', false, 0, [], {} 均回傳true,否則回傳false
 */
function empty(v){
    switch (typeof v){
        case 'undefined' : return true;
        case 'string'    : if(trim(v).length == 0) return true; break;
        case 'boolean'   : if(!v) return true; break;
        case 'number'    : if(0 === v) return true; break;
        case 'object'    : 
            if(null === v) return true;
            if(undefined !== v.length && v.length==0) return true;
            for(var k in v){return false;} return true;
            break;
    }
    return false;
}

實作base64解碼

function base64_decode(data){
    var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,ac = 0,dec = "",tmp_arr = [];
    if (!data) { return data; }
    data += '';
    do { 
        h1 = b64.indexOf(data.charAt(i++));
        h2 = b64.indexOf(data.charAt(i++));
        h3 = b64.indexOf(data.charAt(i++));
        h4 = b64.indexOf(data.charAt(i++));
        bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
        o1 = bits >> 16 & 0xff;
        o2 = bits >> 8 & 0xff;
        o3 = bits & 0xff;
        if (h3 == 64) {
            tmp_arr[ac++] = String.fromCharCode(o1);
        } else if (h4 == 64) {
            tmp_arr[ac++] = String.fromCharCode(o1, o2);
        } else {
            tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
        }
    } while (i < data.length);
    dec = tmp_arr.join('');
    dec = utf8_decode(dec);
    return dec;
}

實作utf8解碼

function utf8_decode(str_data){
    var tmp_arr = [],i = 0,ac = 0,c1 = 0,c2 = 0,c3 = 0;str_data += '';
    while (i < str_data.length) {
        c1 = str_data.charCodeAt(i);
        if (c1 < 128) {
            tmp_arr[ac++] = String.fromCharCode(c1);
            i++;
        } else if (c1 > 191 && c1 < 224) {       
            c2 = str_data.charCodeAt(i + 1);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
            i += 2;
        } else {
            c2 = str_data.charCodeAt(i + 1);
            c3 = str_data.charCodeAt(i + 2);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }
    } 
    return tmp_arr.join('');
}

獲取表單可見范圍的寬與高

function getViewSize(){
    var de=document.documentElement;
    var db=document.body;
    var viewW=de.clientWidth==0 ?  db.clientWidth : de.clientWidth;
    var viewH=de.clientHeight==0 ?  db.clientHeight : de.clientHeight;
    return Array(viewW ,viewH);
}

判斷IE版本號

//(既簡潔、又向后兼容!)

var _IE = (function(){
    var v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i');
    while (
        div.innerHTML = '',
        all[0]
    );
    return v > 4 ? v : false ;
}());

獲取瀏覽器版本號

function browserVersion(types) {
    var other = 1;
    for (i in types) {
        var v = types[i] ? types[i] : i;
        if (USERAGENT.indexOf(v) != -1) {
            var re = new RegExp(v + '(\\/|\\s|:)([\\d\\.]+)', 'ig');
            var matches = re.exec(USERAGENT);
            var ver = matches != null ? matches[2] : 0;
            other = ver !== 0 && v != 'mozilla' ? 0 : other;
        } else {
            var ver = 0;
        }
        eval('BROWSER.' + i + '= ver');
    }
    BROWSER.other = other;
}
半角轉換為全角函式
function ToDBC(str){
  var result = '';
  for(var i=0; i < str.length; i++){
    code = str.charCodeAt(i);
    if(code >= 33 && code <= 126){
      result += String.fromCharCode(str.charCodeAt(i) + 65248);
    }else if (code == 32){
      result += String.fromCharCode(str.charCodeAt(i) + 12288 - 32);
    }else{
      result += str.charAt(i);
    }
  }
 return result;
}

全角轉換為半角函式

function ToCDB(str){
  var result = '';
  for(var i=0; i < str.length; i++){
    code = str.charCodeAt(i);
    if(code >= 65281 && code <= 65374){
      result += String.fromCharCode(str.charCodeAt(i) - 65248);
    }else if (code == 12288){
      result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32);
    }else{
      result += str.charAt(i);
    }
  }
 return result;

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/312145.html

標籤:其他

上一篇:Vue實作直播功能

下一篇:推薦幾款前端編輯器(還在因為只知道一個編輯器被同事嘲笑嗎?看完給他上一課!!!)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more