匯總整理了96個常用的JavaScript工具函數(shù)

1、為元素添加on方法
Element.prototype.on = Element.prototype.addEventListener;NodeList.prototype.on = function (event, fn) {、[]['forEach'].call(this, function (el) {el.on(event, fn);});return this;};
2、為元素添加trigger方法
Element.prototype.trigger = function(type, data) {var event = document.createEvent("htmlEvents");event.initEvent(type, true, true);event.data = data || {};event.eventName = type;event.target = this;this.dispatchEvent(event);return this;};NodeList.prototype.trigger = function(event) {[]["forEach"].call(this, function(el) {el["trigger"](event);});return this;};
3、轉(zhuǎn)義html標(biāo)簽
function HtmlEncode(text) {return text.replace(/&/g, "&").replace(/\"/g, '"').replace(/.replace(/>/g, ">");}
4、HTML標(biāo)簽轉(zhuǎn)義
// HTML 標(biāo)簽轉(zhuǎn)義// @param {Array.} templateData 字符串類型的tokens // @param {...} ..vals 表達式占位符的運算結(jié)果tokens//function SaferHTML(templateData) {var s = templateData[0];for (var i = 1; i < arguments.length; i++) {var arg = String(arguments[i]);// Escape special characters in the substitution.s += arg.replace(/&/g, "&").replace(/.replace(/>/g, ">");// Don't escape special characters in the template.s += templateData[i];}return s;}// 調(diào)用var html = SaferHTML`這是關(guān)于字符串模板的介紹
`;
5、跨瀏覽器綁定事件
function addEventSamp(obj, evt, fn) {if (!oTarget) {return;}if (obj.addEventListener) {obj.addEventListener(evt, fn, false);} else if (obj.attachEvent) {obj.attachEvent("on" + evt, fn);} else {oTarget["on" + sEvtType] = fn;}}
6、加入收藏夾
function addFavorite(sURL, sTitle) {try {window.external.addFavorite(sURL, sTitle);} catch (e) {try {window.sidebar.addPanel(sTitle, sURL, "");} catch (e) {alert("加入收藏失敗,請使用Ctrl+D進行添加");}}}
7、提取頁面代碼中所有網(wǎng)址
var aa = document.documentElement.outerHTML.match(/(url\(|src=|href=)[\"\']*([^\"\'\(\)\<\>\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\<\>\[\] ]+)/gi).join("\r\n").replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/gim, "");alert(aa);
8、動態(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) {}}
9、返回頂部的通用方法
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");
10、實現(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;}
11、確認(rè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ù)字鍵盤1*/if (iKey > 108 && iKey < 112) {return true;} /*數(shù)字鍵盤2*/if (iKey > 185 && iKey < 193) {return true;} /*符號1*/if (iKey > 218 && iKey < 223) {return true;} /*符號2*/return false;}
12、全角半角轉(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("");}
13、版本對比
function compareVersion(v1, v2) {v1 = v1.split(".");v2 = v2.split(".");var len = Math.max(v1.length, v2.length);while (v1.length < len) {v1.push("0");}while (v2.length < len) {v2.push("0");}for (var i = 0; i < len; i++) {var num1 = parseInt(v1[i]);var num2 = parseInt(v2[i]);if (num1 > num2) {return 1;} else if (num1 < num2) {return -1;}}return 0;}
14、壓縮css樣式代碼
function compresscss(s) {//壓縮代碼s = s.replace(/\/\*(.|\n)*?\*\//g, ""); //刪除注釋s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); //容錯處理s = s.replace(/;\s*;/g, ";"); //清除連續(xù)分號s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白return s == null ? "" : s[1];}
15、獲取當(dāng)前路徑
var currentPageUrl = "";if (typeof this.href === "undefined") {currentPageUrl = document.location.toString().toLowerCase();} else {currentPageUrl = this.href.toString().toLowerCase();}
16、字符串長度截取
function cutstr(str, len) {var temp,icount = 0,patrn = /[^\x00-\xff]/,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 + "..."}
17、時間日期格式轉(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;};// 或Date.prototype.format = function(format) {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), //quarterS: 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"));
18、跨瀏覽器刪除事件
function delEvt(obj, evt, fn) {if (!obj) {return;}if (obj.addEventListener) {obj.addEventListener(evt, fn, false);} else if (oTarget.attachEvent) {obj.attachEvent("on" + evt, fn);} else {obj["on" + evt] = fn;}}
19、判斷是否以某個字符串結(jié)束
String.prototype.endWith = function(s) {var d = this.length - s.length;return d >= 0 && this.lastIndexOf(s) == d;};
20、返回腳本內(nèi)容
function evalscript(s) {if (s.indexOf("感谢您访问我们的网站,您可能还对以下资源感兴趣:
国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频
