元素JavaScript知識(shí)點(diǎn)梳理與經(jīng)典百例

JavaScript語(yǔ)法:


js語(yǔ)法.png

DOM操作:

DOM操作.png
  • 數(shù)據(jù)類型
  • 面向?qū)ο?/li>
  • 繼承
  • 閉包
  • 插件
  • 作用域
  • 跨域
  • 原型鏈
  • 模塊化
  • 自定義事件
  • 內(nèi)存泄漏
  • 事件機(jī)制
  • 異步裝載回調(diào)
  • 模板引擎
  • JSON
  • ajax


    面向?qū)ο?png

JavaScript事件觸發(fā):

onkeypress 在用戶按下并放開(kāi)任何字母數(shù)字鍵時(shí)發(fā)生致讥。系統(tǒng)按鈕(例如,箭頭鍵和功能鍵)無(wú)法得到識(shí)別褥紫。[響應(yīng)一個(gè)鍵]
onkeyup 在用戶放開(kāi)任何先前按下的鍵盤(pán)鍵時(shí)發(fā)生侄刽。
onkeydown 在用戶按下任何鍵盤(pán)鍵(包括系統(tǒng)按鈕,如箭頭鍵和功能鍵)時(shí)發(fā)生。[響應(yīng)幾個(gè)鍵的組合]可以響應(yīng)Ctrl陆爽、Alt曹体、Shift等功能鍵和鍵的組合,而onkeypress不能
onfocusout 失去光標(biāo)事件
onfocus 獲得光標(biāo)事件
onabort 圖片下載被打斷時(shí)
onblur 元素失去焦點(diǎn)時(shí)
onclick 鼠標(biāo)點(diǎn)擊
ondblclick 鼠標(biāo)雙擊
onerror 加載文檔或圖片發(fā)生錯(cuò)誤時(shí)
onmousedown 鼠標(biāo)被按下時(shí)
onmousemove 鼠標(biāo)被移動(dòng)時(shí)
onmouseout 鼠標(biāo)離開(kāi)元素時(shí)
onmouseover 鼠標(biāo)經(jīng)過(guò)元素時(shí)
onmouseup 釋放鼠標(biāo)按鍵時(shí)
onunload 用戶離開(kāi)頁(yè)面時(shí)
1.png

100個(gè)原生JavaScript使用功能代碼片段

目錄

1.原生JavaScript實(shí)現(xiàn)字符串長(zhǎng)度截取
2.原生JavaScript獲取域名主機(jī)
3.原生JavaScript清除空格
4.原生JavaScript替換全部
5.原生JavaScript轉(zhuǎn)義html標(biāo)簽
6.原生JavaScript還原h(huán)tml標(biāo)簽
7.原生JavaScript判斷是否為數(shù)字類型
8.原生JavaScript時(shí)間日期格式轉(zhuǎn)換
9.原生JavaScript設(shè)置cookie值
10.原生JavaScript獲取cookie值
11.原生JavaScript加入收藏夾
12.原生JavaScript設(shè)為首頁(yè)
13.原生JavaScript判斷IE6
14.原生JavaScript加載樣式文件
15.原生JavaScript返回腳本內(nèi)容
16.原生JavaScript清除腳本內(nèi)容
17.原生JavaScript動(dòng)態(tài)加載腳本文件
18.原生JavaScript返回按ID檢索的元素對(duì)象
19.原生JavaScript返回瀏覽器版本內(nèi)容
20.原生JavaScript元素顯示的通用方法
21.原生JavaScript中有insertBefore方法,可惜卻沒(méi)有insertAfter方法?用如函數(shù)實(shí)現(xiàn)
22.原生JavaScript中兼容瀏覽器綁定元素事件
23.原生JavaScript光標(biāo)停在文字的后面寥枝,文本框獲得焦點(diǎn)時(shí)調(diào)用
24.原生JavaScript檢驗(yàn)URL鏈接是否有效
25.原生JavaScript格式化CSS樣式代碼
26.原生JavaScript壓縮CSS樣式代碼
27.原生JavaScript獲取當(dāng)前路徑
28.原生JavaScriptIP轉(zhuǎn)成整型
29.原生JavaScript整型解析為IP地址
30.原生JavaScript實(shí)現(xiàn)checkbox全選與全不選
31.原生JavaScript判斷是否移動(dòng)設(shè)備
32.原生JavaScript判斷是否移動(dòng)設(shè)備訪問(wèn)
33.原生JavaScript判斷是否蘋(píng)果移動(dòng)設(shè)備訪問(wèn)
34.原生JavaScript判斷是否安卓移動(dòng)設(shè)備訪問(wèn)
35.原生JavaScript判斷是否Touch屏幕
36.原生JavaScript判斷是否在安卓上的谷歌瀏覽器
37.原生JavaScript判斷是否打開(kāi)視窗
38.原生JavaScript獲取移動(dòng)設(shè)備初始化大小
39.原生JavaScript獲取移動(dòng)設(shè)備最大化大小
40.原生JavaScript獲取移動(dòng)設(shè)備屏幕寬度
41.原生JavaScript完美判斷是否為網(wǎng)址
42.原生JavaScript根據(jù)樣式名稱檢索元素對(duì)象
43.原生JavaScript判斷是否以某個(gè)字符串開(kāi)頭
44.原生JavaScript判斷是否以某個(gè)字符串結(jié)束
45.原生JavaScript返回IE瀏覽器的版本號(hào)
46.原生JavaScript獲取頁(yè)面高度
47.原生JavaScript獲取頁(yè)面scrollLeft
48.原生JavaScript獲取頁(yè)面可視寬度
49.原生JavaScript獲取頁(yè)面寬度
50.原生JavaScript獲取頁(yè)面scrollTop
51.原生JavaScript獲取頁(yè)面可視高度
52.原生JavaScript跨瀏覽器添加事件
53.原生JavaScript跨瀏覽器刪除事件
54.原生JavaScript去掉url前綴
55.原生JavaScript隨機(jī)數(shù)時(shí)間戳
56.原生JavaScript全角半角轉(zhuǎn)換,iCase: 0全到半宪塔,1半到全,其他不轉(zhuǎn)化
57.原生JavaScript確認(rèn)是否鍵盤(pán)有效輸入值
58.原生JavaScript獲取網(wǎng)頁(yè)被卷去的位置
59.原生JavaScript另一種正則日期格式化函數(shù)+調(diào)用方法
60.原生JavaScript時(shí)間個(gè)性化輸出功能
61.原生JavaScript解決offsetX兼容性問(wèn)題
62.原生JavaScript常用的正則表達(dá)式
63.原生JavaScript實(shí)現(xiàn)返回頂部的通用方法
64.原生JavaScript獲得URL中GET參數(shù)值
65.原生JavaScript實(shí)現(xiàn)全選通用方法
66.原生JavaScript實(shí)現(xiàn)全部取消選擇通用方法
67.原生JavaScript實(shí)現(xiàn)打開(kāi)一個(gè)窗體通用方法
68.原生JavaScript判斷是否為客戶端設(shè)備
69.原生JavaScript獲取單選按鈕的值
70.原生JavaScript獲取復(fù)選框的值
71.原生JavaScript判斷是否為郵箱
72.原生JavaScript判斷是否有列表中的危險(xiǎn)字符
73.原生JavaScript判斷字符串是否大于規(guī)定的長(zhǎng)度
74.原生JavaScript判斷字符串是為網(wǎng)址不區(qū)分大小寫(xiě)
75.原生JavaScript判斷字符串是否為小數(shù)
76.原生JavaScript判斷字符串是否為整數(shù)
77.原生JavaScript判斷字符串是否為浮點(diǎn)數(shù)
78.原生JavaScript判斷字符是否為A-Za-z英文字母
79.原生JavaScript判斷字符串是否郵政編碼
80.原生JavaScript判斷字符是否空NULL
81.原生JavaScript用正則表達(dá)式提取頁(yè)面代碼中所有網(wǎng)址
82.原生JavaScript用正則表達(dá)式清除相同的數(shù)組(低效率)
83.原生JavaScript用正則表達(dá)式清除相同的數(shù)組(高效率)
84.原生JavaScript用正則表達(dá)式按字母排序囊拜,對(duì)每行進(jìn)行數(shù)組排序
85.原生JavaScript字符串反序
86.原生JavaScript用正則表達(dá)式清除html代碼中的腳本
87.原生JavaScript動(dòng)態(tài)執(zhí)行JavaScript腳本
88.原生JavaScript動(dòng)態(tài)執(zhí)行VBScript腳本
89.原生JavaScript實(shí)現(xiàn)金額大寫(xiě)轉(zhuǎn)換函數(shù)
90.原生JavaScript常用的正則表達(dá)式大收集
91.原生JavaScript實(shí)現(xiàn)窗體改變事件resize的操作(兼容所以的瀏覽器)
92.原生JavaScript用正則清除空格分左右
93.原生JavaScript判斷變量是否空值
94.原生JavaScript實(shí)現(xiàn)base64解碼
95.原生JavaScript實(shí)現(xiàn)utf8解碼
96.原生JavaScript獲取窗體可見(jiàn)范圍的寬與高
97.原生JavaScript判斷IE版本號(hào)(既簡(jiǎn)潔.又向后兼容D晨稹)
98.原生JavaScript獲取瀏覽器版本號(hào)
99.原生JavaScript半角轉(zhuǎn)換為全角函數(shù)
100.原生JavaScript全角轉(zhuǎn)換為半角函數(shù)

代碼片段

  1. 原生JavaScript實(shí)現(xiàn)字符串長(zhǎng)度截取
function cutstr(str, len) {
  var temp;
  var icount = 0;
  var patrn = /[^\x00-\xff]/; //  匹配雙字節(jié)字符(包括漢字在內(nèi))
  var strren = "";
  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;
      }
    } else {
      break;
    }
  }
  return strre + "...";
}
  1. 原生JavaScript獲取域名主機(jī)
function getHost(url) {
  var host = "null";
  if (typeof url == undefined || url === null) {
    url = window.location.href;
  }
  var regex = /^\w+\:\/\/([^\/]*).*/;
  var match = url.match(regex);
  if (typeof match != undefined && match != null) {
    host = match[1];
  }
  return host;
}
  1. 原生JavaScript清除空格
String.prototype.trim = function() {
  var reExtraSpace = /^\s*(.*?)\s+$/;
  return this.replace(reExtraSpace, "$1");
}
  1. 原生JavaScript替換全部
String.prototype.replaceAll = function(s1, s2) {
  return this.replace(new RegExp(s1, "gm"), s2);
}
  1. 原生JavaScript轉(zhuǎn)義html標(biāo)簽
function HtmlEncode(text) {
  return text.replace(/&/g, '&amp')
            .replace(/\"/g, '&quot')
            .replace(/</g, '&lt')
            .replace(/>/g, '&gt');
}
  1. 原生JavaScript還原h(huán)tml標(biāo)簽
function HtmlDecode(text) {
  return text.replace('&amp', /&/g)
            .replace('&quot', /\"/g)
            .replace('&lt', /</g)
            .replace('&gt', />/g);
}
  1. 原生JavaScript判斷是否為數(shù)字類型
function isDigit(value) {
    var patrn = /^[0-9]*$/;
    if (patrn.exec(value) == null || value == "") {
        return false
    } else {
        return true
    }
}
  1. 原生JavaScript時(shí)間日期格式轉(zhuǎn)換
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
    }
  1. 原生JavaScript設(shè)置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;"
}
  1. 原生JavaScript獲取cookie值
function getCookie(name) {
    var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
    if (arr != null) return unescape(arr[2]);
    return null
}
  1. 原生JavaScript加入收藏夾
function AddFavorite(sURL, sTitle) {
  try {
      window.external.addFavorite(sURL, sTitle)
  } catch(e) {
      try {
          window.sidebar.addPanel(sTitle, sURL, "")
      } catch(e) {
          alert("加入收藏失敗,請(qǐng)使用Ctrl+D進(jìn)行添加")
      }
  }
}
  1. 原生JavaScript設(shè)為首頁(yè)
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("該操作被瀏覽器拒絕冠跷,如果想啟用該功能南誊,請(qǐng)?jiān)诘刂窓趦?nèi)輸入 about:config,然后將項(xiàng) 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://***')
    }
}
  1. 原生JavaScript判斷IE6
var ua = navigator.userAgent.toLowerCase();
var isIE6 = ua.indexOf("msie 6") > -1;
if (isIE6) {
    try {
        document.execCommand("BackgroundImageCache", false, true)
    } catch(e) {}
}
  1. 原生JavaScript加載樣式文件
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)
    }
}
  1. 原生JavaScript返回腳本內(nèi)容
function evalscript(s) {
    if(s.indexOf('<script') == -1) return s;
    var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;
    var arr = [];
    while(arr = p.exec(s)) {
        var p1 = /<script[^\>]*?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 = /<script(.*?)>([^\x00]+?)<\/script>/i;
            arr1 = p1.exec(arr[0]);
            appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);
        }
    }
    return s;
}
  1. 原生JavaScript清除腳本內(nèi)容
function stripscript(s) {
  return s.replace(/<script.*?>.*?<\/script>/ig, '');
}
  1. 原生JavaScript動(dòng)態(tài)加載腳本文件
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) {}
}
  1. 原生JavaScript返回按ID檢索的元素對(duì)象
function $(id) {
  return !id ? null : document.getElementById(id);
}
  1. 原生JavaScript返回瀏覽器版本內(nèi)容
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;
}
  1. 原生JavaScript元素顯示的通用方法
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' : '';
    }
}
  1. 原生JavaScript中有insertBefore方法,可惜卻沒(méi)有insertAfter方法?用如下函數(shù)實(shí)現(xiàn)
function insertAfter(newChild, refChild) {
  var parElem = refChild.parentNode; 
  if(parElem.lastChild == refChild){ 
    refChild.appendChild(newChild); 
  }else{ 
    parElem.insertBefore(newChild, refChild.nextSibling); 
  } 
}
  1. 原生JavaScript中兼容瀏覽器綁定元素事件
function addEventSamp(obj, evt, fn){ 
    if (obj.addEventListener) { 
        obj.addEventListener(evt, fn, false); 
    }else if(obj.attachEvent){ 
        obj.attachEvent('on' + evt, fn); 
    } 
}
  1. 原生JavaScript光標(biāo)停在文字的后面,文本框獲得焦點(diǎn)時(shí)調(diào)用
function focusLast(){ 
    var e = event.srcElement; 
    var r =e.createTextRange(); 
    r.moveStart('character',e.value.length); 
    r.collapse(true); 
    r.select(); 
}
  1. 原生JavaScript檢驗(yàn)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; 
        } 
    } 
}
  1. 原生JavaScript格式化CSS樣式代碼
function formatCss(s){  //格式化代碼
    s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");
    s = s.replace(/;\s*;/g, ";"); //清除連續(xù)分號(hào)
    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;
}
  1. 原生JavaScript壓縮CSS樣式代碼
function yasuoCss (s) { //壓縮代碼
    s = s.replace(/\/\*(.|\n)*?\*\//g, ""); //刪除注釋
    s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");
    s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); //容錯(cuò)處理
    s = s.replace(/;\s*;/g, ";"); //清除連續(xù)分號(hào)
    s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白
    return (s == null) ? "" : s[1];
}
  1. 原生JavaScript獲取當(dāng)前路徑
var currentPageUrl = "";
if (typeof this.href === undefined) {
    currentPageUrl = document.location.toString().toLowerCase();
}
else {
    currentPageUrl = this.href.toString().toLowerCase();
}
  1. 原生JavaScript將IP地址轉(zhuǎn)成整型
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;
}
  1. 原生JavaScript整型解析為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;
}
  1. 原生JavaScript實(shí)現(xiàn)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;
        }
    }
}
  1. 原生JavaScript判斷是否移動(dòng)設(shè)備
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;
}
  1. 原生JavaScript判斷是否移動(dòng)設(shè)備訪問(wèn)
function isMobileUserAgent() {
  return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));
}
  1. 原生JavaScript判斷是否蘋(píng)果移動(dòng)設(shè)備訪問(wèn)
function isAppleMobileDevice() {
  return (/iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()));
}
  1. 原生JavaScript判斷是否安卓移動(dòng)設(shè)備訪問(wèn)
function isAndroidMobileDevice(){
  return (/android/i.test(navigator.userAgent.toLowerCase()));
}
  1. 原生JavaScript判斷是否Touch屏幕
function isTouchScreen() {
  return (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);
}
  1. 原生JavaScript判斷是否在安卓上的谷歌瀏覽器
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;
}
  1. 原生JavaScript判斷是否打開(kāi)視窗
function isViewportOpen() {
  return !!document.getElementById('wixMobileViewport');
}
  1. 原生JavaScript獲取移動(dòng)設(shè)備初始化大小
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;
}
  1. 原生JavaScript獲取移動(dòng)設(shè)備最大化大小
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;
    }
}
  1. 原生JavaScript獲取移動(dòng)設(shè)備屏幕寬度
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;
}
  1. 原生JavaScript完美判斷是否為網(wǎng)址
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;
    }
}
  1. 原生JavaScript根據(jù)樣式名稱檢索元素對(duì)象
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;
}
  1. 原生JavaScript判斷是否以某個(gè)字符串開(kāi)頭
String.prototype.startWith = function (s) {
  return this.indexOf(s) == 0;
}
  1. 原生JavaScript判斷是否以某個(gè)字符串結(jié)束
String.prototype.endWith = function (s) {
  var d = this.length - s.length;
  return (d >= 0 && this.lastIndexOf(s) == d);
}
  1. 原生JavaScript返回IE瀏覽器的版本號(hào)
function getIE(){
    if (window.ActiveXObject){
        var v = navigator.userAgent.match(/MSIE ([^;]+)/)[1];
        return parseFloat(v.substring(0, v.indexOf(".")));
    }
    return false;
}
  1. 原生JavaScript獲取頁(yè)面高度
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);
}
  1. 原生JavaScript獲取頁(yè)面scrollLeft
function getPageScrollLeft(){
  var a = document;
  return a.documentElement.scrollLeft || a.body.scrollLeft;
}
  1. 原生JavaScript獲取頁(yè)面可視寬度
function getPageViewWidth(){
    var d = document, a = d.compatMode == "BackCompat"
            ? d.body
            : d.documentElement;
    return a.clientWidth;  //  可視寬度為clientWidth
}
  1. 原生JavaScript獲取頁(yè)面寬度
//  考慮帶滾動(dòng)條的全部寬度
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);
}
  1. 原生JavaScript獲取頁(yè)面scrollTop
function getPageScrollTop(){
  var a = document;
  return a.documentElement.scrollTop || a.body.scrollTop;
}
  1. 原生JavaScript獲取頁(yè)面可視高度
function getPageViewHeight() {
    var d = document, a = d.compatMode == "BackCompat"
            ? d.body
            : d.documentElement;
    return a.clientHeight;
}
  1. 原生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;
    }
}
  1. 原生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;
    }
}
  1. 原生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;
}
  1. 原生JavaScript隨機(jī)數(shù)時(shí)間戳
function uniqueId() {
  var a = Math.random, b = parseInt;
  return Number(new Date()).toString()+b(10*a())+b(10*a())+b(10*a());
}
  1. 原生JavaScript全角半角轉(zhuǎn)換,iCase: 0全到半蜜托,1半到全抄囚,其他不轉(zhuǎn)化
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("");        
}
  1. 原生JavaScript確認(rèn)是否鍵盤(pán)有效輸入值
function checkKey(iKey){
    if(iKey == 32 || iKey == 229){return true;} /*空格和異常*/
    if(iKey>47 && iKey < 58){return true;}  /*數(shù)字*/
    if(iKey>64 && iKey < 91){return true;}  /*字母*/
    if(iKey>95 && iKey < 108){return true;} /*數(shù)字鍵盤(pán)1*/
    if(iKey>108 && iKey < 112){return true;}  /*數(shù)字鍵盤(pán)2*/
    if(iKey>185 && iKey < 193){return true;}  /*符號(hào)1*/
    if(iKey>218 && iKey < 223){return true;}  /*符號(hào)2*/
    return false;
}
  1. 原生JavaScript獲取網(wǎng)頁(yè)被卷去的位置
function getScrollXY() {
    return document.body.scrollTop ? {
        x: document.body.scrollLeft,
        y: document.body.scrollTop
    }: {
        x: document.documentElement.scrollLeft,
        y: document.documentElement.scrollTop
    }
}
  1. 原生JavaScript另一種正則日期格式化函數(shù)+調(diào)用方法
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. 原生JavaScript時(shí)間個(gè)性化輸出功能
/*
1、< 60s, 顯示為“剛剛”
2橄务、>= 1min && < 60 min, 顯示與當(dāng)前時(shí)間差“XX分鐘前”
3幔托、>= 60min && < 1day, 顯示與當(dāng)前時(shí)間差“今天 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;
}
  1. 原生JavaScript解決offsetX兼容性問(wèn)題
// 針對(duì)火狐不支持offsetX/Y
function getOffset(e) {
  var target = e.target, // 當(dāng)前觸發(fā)的目標(biāo)對(duì)象
      eventCoord,
      pageCoord,
      offsetCoord;

  // 計(jì)算當(dāng)前觸發(fā)元素到文檔的距離
  pageCoord = getPageCoord(target);

  // 計(jì)算光標(biāo)到文檔的距離
  eventCoord = {
    X : window.pageXOffset + e.clientX,
    Y : window.pageYOffset + e.clientY
  };

  // 相減獲取光標(biāo)到第一個(gè)定位的父元素的坐標(biāo)
  offsetCoord = {
    X : eventCoord.X - pageCoord.X,
    Y : eventCoord.Y - pageCoord.Y
  };
  return offsetCoord;
}

function getPageCoord(element) {
  var coord = { X : 0, Y : 0 };
  // 計(jì)算從當(dāng)前觸發(fā)元素到根節(jié)點(diǎn)為止重挑,
  // 各級(jí) offsetParent 元素的 offsetLeft 或 offsetTop 值之和
  while (element){
    coord.X += element.offsetLeft;
    coord.Y += element.offsetTop;
    element = element.offsetParent;
  }
  return coord;
}
  1. 原生JavaScript常用的正則表達(dá)式
//正整數(shù)
/^[0-9]*[1-9][0-9]*$/;
//負(fù)整數(shù)
/^-[0-9]*[1-9][0-9]*$/;
//正浮點(diǎn)數(shù)
/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;   
//負(fù)浮點(diǎn)數(shù)
/^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;  
//浮點(diǎn)數(shù)
/^(-?\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]/;
//匹配帳號(hào)是否合法(字母開(kāi)頭棠涮,允許5-10字節(jié)谬哀,允許字母數(shù)字下劃線)
/^[a-zA-Z][a-zA-Z0-9_]{4,9}$/;
//匹配空白行的正則表達(dá)式
/\n\s*\r/;
//匹配中國(guó)郵政編碼
/[1-9]\d{5}(?!\d)/;
//匹配身份證
/\d{15}|\d{18}/;
//匹配國(guó)內(nèi)電話號(hào)碼
/(\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?)/;
//匹配首尾空白字符的正則表達(dá)式
/^\s*|\s*$/;
//匹配HTML標(biāo)記的正則表達(dá)式
< (\S*?)[^>]*>.*?|< .*? />;
  1. 原生JavaScript實(shí)現(xiàn)返回頂部的通用方法
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');
  1. 原生JavaScript獲得URL中的GET參數(shù)值
// 用法:如果地址是 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]) {
    var 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];
}
  1. 原生JavaScript實(shí)現(xiàn)全選通用方法
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;
        }
    }
}
  1. 原生JavaScript實(shí)現(xiàn)全部取消選擇通用方法
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;
    }
}
  1. 原生JavaScript實(shí)現(xiàn)打開(kāi)一個(gè)窗體通用方法
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();
    }
}
  1. 原生JavaScript判斷是否為客戶端設(shè)備
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;
}
  1. 原生JavaScript獲取單選按鈕的值
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;                
    }    
}
  1. 原生JavaScript獲取復(fù)選框的值
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;
    }            
}
  1. 原生JavaScript判斷是否為郵箱
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;
    }    
}
  1. 原生JavaScript判斷是否有列表中的危險(xiǎn)字符
function isValidReg(chars){
    var re=/<|>|\[|\]|\{|\}|『|』|※||||§|||||||□||㊣|﹋|⊕|⊙|〒|ㄅ|ㄆ|ㄇ|ㄈ|ㄉ|ㄊ|ㄋ|ㄌ|ㄍ|ㄎ|ㄏ|ㄐ|ㄑ|ㄒ|ㄓ|ㄔ|ㄕ|ㄖ|ㄗ|ㄘ|ㄙ|(zhì)ㄚ|ㄛ|ㄜ|ㄝ|ㄞ|ㄟ|ㄢ|ㄣ|ㄤ|ㄥ|ㄦ|ㄧ|ㄨ|ㄩ|■|▄|▆|\*|@|#|\^|\\/;
    if (re.test( chars) == true) {
        return false;
    }else{
        return true;
    }    
}
  1. 原生JavaScript判斷字符串是否大于規(guī)定的長(zhǎng)度
function isValidLength(chars, len) {
    if (chars.length < len) {
        return false;
    }
    return true;
}
  1. 原生JavaScript判斷字符串是為網(wǎng)址不區(qū)分大小寫(xiě)
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;
}
  1. 原生JavaScript判斷字符串是否為小數(shù)
function isValidDecimal( chars ) {
    var re=/^\d*\.?\d{1,2}$/;
    if (chars.match(re) == null)
        return false;
    else
        return true;
}
  1. 原生JavaScript判斷字符串是否為整數(shù)
function isNumber(chars) {
  var re=/^\d*$/;
  if (chars.match(re) == null)
    return false;
  else
    return true;
}
  1. 原生JavaScript判斷字符串是否為浮點(diǎn)數(shù)
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;
}
  1. 原生JavaScript判斷字符是否為A-Za-z英文字母
function isLetters(str) {
  var re = /^[A-Za-z]+$/;
  if (str.match(re) == null)
    return false;
  else
    return true;
}
  1. 原生JavaScript判斷字符串是否郵政編碼
function isValidPost( chars ) {
  var re=/^\d{6}$/;
    if (chars.match(re) == null)
      return false;
    else
      return true;
}
  1. 原生JavaScript判斷字符是否空NULL
function isNULL( chars ) {
  if (chars == null)
    return true;
  if (jsTrim(chars).length == 0)
    return true;
  return false;
}
  1. 原生JavaScript用正則表達(dá)式提取頁(yè)面代碼中所有網(wǎng)址
var aa = document.documentElement.outerHTML.match(/(url\(|src=|href=)[\"\']*([^\"\'\(\)\<\>\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\<\>\[\] ]+)/ig).join("\r\n").replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/igm,"");
alert(aa);
  1. 原生JavaScript用正則表達(dá)式清除相同的數(shù)組(低效率)
Array.prototype.unique = function() {
  return this.reverse().join(",").match(/([^,]+)(?!.*\1)/ig).reverse();
}
  1. 原生JavaScript用正則表達(dá)式清除相同的數(shù)組(高效率)
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. 原生JavaScript用正則表達(dá)式按字母排序,對(duì)每行進(jìn)行數(shù)組排序
function SetSort(){
  var text = K1.value.split(/[\r\n]/).sort().join("\r\n");  //  順序
  var test = K1.value.split(/[\r\n]/).sort().reverse().join("\r\n");  //  反序
  K1.value = (K1.value != text) ? text : test;
}
  1. 原生JavaScript字符串反序
function IsReverse(text) {
  return text.split('').reverse().join('');
}
  1. 原生JavaScript用正則表達(dá)式清除html代碼中的腳本
function clear_script() {
  K1.valu e= K1.value.replace(/<script.*?>[\s\S]*?<\/script>|\s+on[a-zA-Z]{3,16}\s?=\s?"[\s\S]*?"|\s+on[a-zA-Z]{3,16}\s?=\s?'[\s\S]*?'|\s+on[a-zA-Z]{3,16}\s?=[^ >]+/ig,"");
}
  1. 原生JavaScript動(dòng)態(tài)執(zhí)行JavaScript腳本
function javascript(){
  try{
    eval(K1.value);
  }catch(e){
    alert(e.message);
  }
}
  1. 原生JavaScript動(dòng)態(tài)執(zhí)行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 "請(qǐng)輸入正確的VBScript腳本!",48,"腳本錯(cuò)誤!" \n End If',"vbscript")
    } catch(e) {
      alert(e.message);
    }
}
  1. 原生JavaScript實(shí)現(xiàn)金額大寫(xiě)轉(zhuǎn)換函數(shù)
function transform(tranvalue) {
  try {
    var i = 1;
    var dw2 = new Array("", "萬(wàn)", "億"); //大單位
    var dw1 = new Array("拾", "佰", "仟"); //小單位
    var dw = new Array("零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖"); //整數(shù)部分用
    //以下是小寫(xiě)轉(zhuǎn)換成大寫(xiě)顯示在合計(jì)大寫(xiě)的文本框中     
    //分離整數(shù)與小數(shù)
    var source = splits(tranvalue);
    var num = source[0];
    var dig = source[1];
    //轉(zhuǎn)換整數(shù)部分
    var k1 = 0; //計(jì)小單位
    var k2 = 0; //計(jì)大單位
    var sum = 0;
    var str = "";
    var len = source[0].length; //整數(shù)的長(zhǎng)度
    for (i = 1; i <= len; i++) {
      var n = source[0].charAt(len - i); //取得某個(gè)位數(shù)上的數(shù)字
      var bn = 0;
      if (len - i - 1 >= 0) {
        bn = source[0].charAt(len - i - 1); //取得某個(gè)位數(shù)前一位上的數(shù)字
      }
      sum = sum + Number(n);
      if (sum != 0) {
        str = dw[Number(n)].concat(str); //取得該數(shù)字對(duì)應(yīng)的大寫(xiě)數(shù)字严肪,并插入到str字符串的前面
        if (n == '0') sum = 0;
      }
      if (len - i - 1 >= 0) { //在數(shù)字范圍內(nèi)
        if (k1 != 3) { //加小單位
          if (bn != 0) {
            str = dw1[k1].concat(str);
          }
          k1++;
        } else { //不加小單位史煎,加大單位
          k1 = 0;
          var temp = str.charAt(0);
          if (temp == "萬(wàn)" || temp == "億") //若大單位前沒(méi)有數(shù)字則舍去大單位
          str = str.substr(1, str.length - 1);
          str = dw2[k2].concat(str);
          sum = 0;
        }
      }
      if (k1 == 3) //小單位到千則大單位進(jìn)一
      {
        k2++;
      }
    }
    //轉(zhuǎn)換小數(shù)部分
    var strdig = "";
    if (dig != "") {
      var n = dig.charAt(0);
      if (n != 0) {
        strdig += dw[Number(n)] + "角"; //加數(shù)字
      }
      var n = dig.charAt(1);
      if (n != 0) {
        strdig += dw[Number(n)] + "分"; //加數(shù)字
      }
    }
    str += "元" + strdig;
  } catch(e) {
    return "0元";
  }
  return str;
}
//拆分整數(shù)與小數(shù)
function splits(tranvalue) {
  var value = new Array('', '');
  temp = tranvalue.split(".");
  for (var i = 0; i < temp.length; i++) {
    value[i] = temp[i];
  }
  return value;
}
  1. 原生JavaScript常用的正則表達(dá)式大收集
匹配中文字符的正則表達(dá)式: [\u4e00-\u9fa5] 
匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff] 
匹配空行的正則表達(dá)式:\n[\s| ]*\r 
匹配 HTML 標(biāo)記的正則表達(dá)式:<(.*)>.*<\/\1>|<(.*) \/>
匹配首尾空格的正則表達(dá)式:(^\s*)|(\s*$) 
匹配 IP 地址的正則表達(dá)式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g
匹配 Email 地址的正則表達(dá)式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配網(wǎng)址 URL 的正則表達(dá)式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
sql 語(yǔ)句:^(select|drop|delete|create|update|insert).*$ 
非負(fù)整數(shù):^\d+$ 
正整數(shù):^[0-9]*[1-9][0-9]*$ 
非正整數(shù):^((-\d+)|(0+))$ 
負(fù)整數(shù):^-[0-9]*[1-9][0-9]*$ 
整數(shù):^-?\d+$ 
非負(fù)浮點(diǎn)數(shù):^\d+(\.\d+)?$ 
正浮點(diǎn)數(shù):^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ 
非正浮點(diǎn)數(shù):^((-\d+\.\d+)?)|(0+(\.0+)?))$ 
英文字符串:^[A-Za-z]+$ 
英文大寫(xiě)串:^[A-Z]+$ 
英文小寫(xiě)串:^[a-z]+$ 
英文字符數(shù)字串:^[A-Za-z0-9]+$ 
英數(shù)字加下劃線串:^\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}$ 
電話號(hào)碼:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$ 
手機(jī)號(hào)碼:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$ 
雙字節(jié)字符(包括漢字在內(nèi)):^\x00-\xff 
匹配首尾空格:(^\s*)|(\s*$)
匹配 HTML 標(biāo)記:<(.*)>.*<\/\1>|<(.*) \/> 
匹配空行:\n[\s| ]*\r 
提取信息中的網(wǎng)絡(luò)鏈接:(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+) 
提取信息中的中國(guó)手機(jī)號(hào)碼:(86)*0*13\d{9} 
提取信息中的中國(guó)固定電話號(hào)碼:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8} 
提取信息中的中國(guó)電話號(hào)碼(包括移動(dòng)和固定電話):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14} 
提取信息中的中國(guó)郵政編碼:[1-9]{1}(\d+){5} 
提取信息中的浮點(diǎn)數(shù)(即小數(shù)):(-?\d*)\.?\d+ 
提取信息中的任何數(shù)字 :(-?\d*)(\.\d+)? 
IP:(\d+)\.(\d+)\.(\d+)\.(\d+) 
電話區(qū)號(hào):^0\d{2,3}$
騰訊 QQ 號(hào):^[1-9]*[1-9][0-9]*$ 
帳號(hào)(字母開(kāi)頭,允許 5-16 字節(jié)驳糯,允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 
中文篇梭、英文、數(shù)字及下劃線:^[\u4e00-\u9fa5_a-zA-Z0-9]+$
  1. 原生JavaScript實(shí)現(xiàn)窗體改變事件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){
      // 當(dāng)窗體的寬度小于1255的時(shí)候執(zhí)行相應(yīng)的操作
    }else{
      // 當(dāng)窗體的寬度大于1255的時(shí)候執(zhí)行相應(yīng)的操作
    }
  }
  if(window.addEventListener){
    window.addEventListener('resize', function(){ fn(); });
  }else if(window.attachEvent){
    window.attachEvent('onresize', function(){ fn(); });
  }
  fn();
})();
  1. 原生JavaScript用正則清除空格分左右
function ltrim(s){ return s.replace( /^(\s*| *)/, ""); } 
function rtrim(s){ return s.replace( /(\s*| *)$/, ""); } 
function trim(s){ return ltrim(rtrim(s)); } 
  1. 原生JavaScript判斷變量是否空值
/**
 * 判斷變量是否空值
 * 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;
}
  1. 原生JavaScript實(shí)現(xiàn)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;
}

95, 原生JavaScript實(shí)現(xiàn)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('');
}
  1. 原生JavaScript獲取窗體可見(jiàn)范圍的寬與高
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);
}
  1. 原生JavaScript判斷IE版本號(hào)(既簡(jiǎn)潔很洋、又向后兼容!)
var _IE = (function(){
    var v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i');
    while (
        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
        all[0]
    );
    return v > 4 ? v : false ;
}());
  1. 原生JavaScript獲取瀏覽器版本號(hào)
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;
}
  1. 原生JavaScript半角轉(zhuǎn)換為全角函數(shù)
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;
}
  1. 原生JavaScript全角轉(zhuǎn)換為半角函數(shù)
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;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末隧枫,一起剝皮案震驚了整個(gè)濱河市喉磁,隨后出現(xiàn)的幾起案子谓苟,更是在濱河造成了極大的恐慌,老刑警劉巖协怒,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涝焙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡孕暇,警方通過(guò)查閱死者的電腦和手機(jī)仑撞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)隧哮,“玉大人,你說(shuō)我怎么就攤上這事座舍【谙瑁” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵曲秉,是天一觀的道長(zhǎng)采蚀。 經(jīng)常有香客問(wèn)我,道長(zhǎng)承二,這世上最難降的妖魔是什么榆鼠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮亥鸠,結(jié)果婚禮上妆够,老公的妹妹穿的比我還像新娘。我一直安慰自己负蚊,他們只是感情好神妹,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著盖桥,像睡著了一般灾螃。 火紅的嫁衣襯著肌膚如雪题翻。 梳的紋絲不亂的頭發(fā)上揩徊,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音嵌赠,去河邊找鬼塑荒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛姜挺,可吹牛的內(nèi)容都是我干的齿税。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼炊豪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼凌箕!你這毒婦竟也來(lái)了拧篮?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤牵舱,失蹤者是張志新(化名)和其女友劉穎串绩,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體芜壁,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡礁凡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了慧妄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顷牌。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖塞淹,靈堂內(nèi)的尸體忽然破棺而出窟蓝,到底是詐尸還是另有隱情,我是刑警寧澤窖铡,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布疗锐,位于F島的核電站,受9級(jí)特大地震影響费彼,放射性物質(zhì)發(fā)生泄漏滑臊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一箍铲、第九天 我趴在偏房一處隱蔽的房頂上張望雇卷。 院中可真熱鬧,春花似錦颠猴、人聲如沸关划。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贮折。三九已至,卻和暖如春资盅,著一層夾襖步出監(jiān)牢的瞬間调榄,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工呵扛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留每庆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓今穿,卻偏偏與公主長(zhǎng)得像缤灵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容