目录

  • 1. 为元素添加 on 方法
  • 2. 为元素添加trigger方法
  • 3. 转义 HTML 标签
  • 4. HTML 标签转义
  • 5. 跨浏览器绑定事件
  • 5. 加入收藏夹
  • 7. 提取页面代码中所有网址
  • 8. 动态加载脚本文件
  • 9. 返回顶部的通用方法
  • 10. 实现base64解码
  • 11. 确认是否是键盘有效输入值
  • 12. 全角半角转换
  • 13. 版本对比
  • 14. 压缩CSS样式代码
  • 15. 获取当前路径
  • 16. 字符串长度截取
  • 17. 时间日期格式转换
  • 18. 跨浏览器删除事件
  • 19. 判断是否以某个字符串结束
  • 20. 返回脚本内容
  • 21. 格式化CSS样式代码
  • 22. 获取Cookie值
  • 23. 获得URL中GET参数值
  • 24. 获取移动设备初始化大小
  • 25. 获取页面高度
  • 26. 获取页面scrollLeft
  • 27. 获取页面scrollTop
  • 28. 获取页面可视高度
  • 29. 获取页面可视宽度
  • 30. 获取页面宽度
  • 31. 获取移动设备屏幕宽度
  • 32. 获取网页被卷去的位置
  • 33. 获取URL上的参数
  • 34. 检验URL链接是否有效
  • 35. 获取窗体可见范围的宽与高
  • 36. 获取移动设备最大化大小
  • 37. 判断是否安卓移动设备访问
  • 38. 判断是否苹果移动设备访问
  • 39. 判断是否为数字类型
  • 40. 是否是某类手机型号
  • 41. 判断是否移动设备
  • 42. 判断是否手机号码
  • 43. 判断是否是移动设备访问
  • 44. 判断鼠标是否移出事件
  • 45. 判断是否Touch屏幕
  • 46. 判断是否为网址
  • 47. 判断是否打开视窗
  • 48. 加载样式文件
  • 49. 替换地址栏
  • 50. 解决offsetX兼容性问题
  • 51. 打开一个窗体通用方法
  • 52. 将键值对拼接成URL带参数
  • 53. 去掉url前缀
  • 54. 替换全部
  • 55. resize的操作
  • 56. 滚动到顶部
  • 57. 设置Cookie值
  • 58. 设为首页
  • 59. 按字母排序,对每行进行数组排序
  • 60. 延时执行
  • 61. 判断是否以某个字符串开头
  • 62. 清除脚本内容
  • 63. 时间个性化输出功能
  • 64. 全角转换为半角函数
  • 65. 半角转换为全角
  • 66. 金额大写转换函数
  • 67. 清除空格
  • 68. 随机数时间戳
  • 69. 实现utf8解码

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. 转义 HTML 标签

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

4. HTML 标签转义

// HTML 标签转义
// @param {Array.<DOMString>} templateData 字符串类型的tokens
// @param {...} ..vals 表达式占位符的运算结果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, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");// Don't escape special characters in the template.s += templateData[i];}return s;
}
// 调用
var html = SaferHTML`<p>这是关于字符串模板的介绍</p>`;

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

5. 加入收藏夹

function addFavorite(sURL, sTitle) {try {window.external.addFavorite(sURL, sTitle);} catch (e) {try {window.sidebar.addPanel(sTitle, sURL, "");} catch (e) {alert("加入收藏失败,请使用Ctrl+D进行添加");}}
}

7. 提取页面代码中所有网址

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

8. 动态加载脚本文件

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. 实现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. 确认是否是键盘有效输入值

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

12. 全角半角转换

//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("");
}

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, ";"); //清除连续分号s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白return s == null ? "" : s[1];
}

15. 获取当前路径

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. 时间日期格式转换

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. 判断是否以某个字符串结束

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

20. 返回脚本内容

function evalscript(s) {if (s.indexOf("<script") == -1) return s;var p = /<script[^\>]*?>([^\x00]*?)<\/script>/gi;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;
}

21. 格式化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;
}

22. 获取Cookie值

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

23. 获得URL中GET参数值

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

24. 获取移动设备初始化大小

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

25. 获取页面高度

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

26. 获取页面scrollLeft

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

27. 获取页面scrollTop

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

28. 获取页面可视高度

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

29. 获取页面可视宽度

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

30. 获取页面宽度

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

31. 获取移动设备屏幕宽度

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

32. 获取网页被卷去的位置

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

33. 获取URL上的参数

// 获取URL中的某参数值,不区分大小写
// 获取URL中的某参数值,不区分大小写,
// 默认是取'hash'里的参数,
// 如果传其他参数支持取‘search’中的参数
// @param {String} name 参数名称
export function getUrlParam(name, type = "hash") {let newName = name,reg = new RegExp("(^|&)" + newName + "=([^&]*)(&|$)", "i"),paramHash = window.location.hash.split("?")[1] || "",paramSearch = window.location.search.split("?")[1] || "",param;type === "hash" ? (param = paramHash) : (param = paramSearch);let result = param.match(reg);if (result != null) {return result[2].split("/")[0];}return null;
}

34. 检验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;}}
}

35. 获取窗体可见范围的宽与高

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

36. 获取移动设备最大化大小

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

37. 判断是否安卓移动设备访问

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

38. 判断是否苹果移动设备访问

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

39. 判断是否为数字类型

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

40. 是否是某类手机型号

// 用devicePixelRatio和分辨率判断
const isIphonex = () => {// X XS, XS Max, XRconst xSeriesConfig = [{devicePixelRatio: 3,width: 375,height: 812},{devicePixelRatio: 3,width: 414,height: 896},{devicePixelRatio: 2,width: 414,height: 896}];// h5if (typeof window !== "undefined" && window) {const isIOS = /iphone/gi.test(window.navigator.userAgent);if (!isIOS) return false;const { devicePixelRatio, screen } = window;const { width, height } = screen;return xSeriesConfig.some(item =>item.devicePixelRatio === devicePixelRatio &&item.width === width &&item.height === height);}return false;
};

41. 判断是否移动设备

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

42. 判断是否手机号码

function isMobileNumber(e) {var i ="134,135,136,137,138,139,150,151,152,157,158,159,187,188,147,182,183,184,178",n = "130,131,132,155,156,185,186,145,176",a = "133,153,180,181,189,177,173,170",o = e || "",r = o.substring(0, 3),d = o.substring(0, 4),s =!!/^1\d{10}$/.test(o) &&(n.indexOf(r) >= 0? "联通": a.indexOf(r) >= 0? "电信": "1349" == d? "电信": i.indexOf(r) >= 0? "移动": "未知");return s;
}

43. 判断是否是移动设备访问

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

44. 判断鼠标是否移出事件

function isMouseOut(e, handler) {if (e.type !== "mouseout") {return false;}var reltg = e.relatedTarget? e.relatedTarget: e.type === "mouseout"? e.toElement: e.fromElement;while (reltg && reltg !== handler) {reltg = reltg.parentNode;}return reltg !== handler;
}

45. 判断是否Touch屏幕

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

46. 判断是否为网址

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

47. 判断是否打开视窗

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

48. 加载样式文件

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

49. 替换地址栏

function locationReplace(url) {if (history.replaceState) {history.replaceState(null, document.title, url);history.go(0);} else {location.replace(url);}
}

50. 解决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;
}

51. 打开一个窗体通用方法

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

52. 将键值对拼接成URL带参数

export default const fnParams2Url = obj=> {let aUrl = []let fnAdd = function(key, value) {return key + '=' + value}for (var k in obj) {aUrl.push(fnAdd(k, obj[k]))}return encodeURIComponent(aUrl.join('&'))}

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

54. 替换全部

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

55. 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();
})();

56. 滚动到顶部

// 使用document.documentElement.scrollTop 或 document.body.scrollTop 获取到顶部的距离,从顶部
// 滚动一小部分距离。使用window.requestAnimationFrame()来滚动。
// @example
// scrollToTop();
function scrollToTop() {var c = document.documentElement.scrollTop || document.body.scrollTop;if (c > 0) {window.requestAnimationFrame(scrollToTop);window.scrollTo(0, c - c / 8);}
}

57. 设置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;";
}

58. 设为首页

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

59. 按字母排序,对每行进行数组排序

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

60. 延时执行

// 比如 sleep(1000) 意味着等待1000毫秒,还可从 Promise、Generator、Async/Await 等角度实现。
// Promise
const sleep = time => {return new Promise(resolve => setTimeout(resolve, time));
};sleep(1000).then(() => {console.log(1);
});// Generator
function* sleepGenerator(time) {yield new Promise(function(resolve, reject) {setTimeout(resolve, time);});
}sleepGenerator(1000).next().value.then(() => {console.log(1);});//async
function sleep(time) {return new Promise(resolve => setTimeout(resolve, time));
}async function output() {let out = await sleep(1000);console.log(1);return out;
}output();function sleep(callback, time) {if (typeof callback === "function") {setTimeout(callback, time);}
}function output() {console.log(1);
}sleep(output, 1000);

61. 判断是否以某个字符串开头

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

62. 清除脚本内容

function stripscript(s) {return s.replace(/<script.*?>.*?<\/script>/gi, "");
}

63. 时间个性化输出功能

/*
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() + 10,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;
}

64. 全角转换为半角函数

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

65. 半角转换为全角

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

66. 金额大写转换函数

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 = temp;}return value;
}

67. 清除空格

String.prototype.trim = function() {var reExtraSpace = /^\s*(.*?)\s+$/;return this.replace(reExtraSpace, "$1");
};// 清除左空格
function ltrim(s) {return s.replace(/^(\s*| *)/, "");
}// 清除右空格
function rtrim(s) {return s.replace(/(\s*| *)$/, "");
}

68. 随机数时间戳

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

69. 实现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("");
}

JavaScript 常用工具函数相关推荐

  1. javascript常用工具类整理(copy)

    JavaScript常用工具类 类型 日期 数组 字符串 数字 网络请求 节点 存储 其他 1.类型 isString (o) { //是否字符串return Object.prototype.toS ...

  2. js插件编写常用工具函数及格式

    一.基本格式 1 ;(function(undefined) { 2 "use strict" 3 var _global; 4 5 var plugin = { 6 add: f ...

  3. 【JavaScript学习】JavaScript 常用工具类封装

    文章目录 1.JavaScript 常用工具类封装 (1)获得浏览器地址所有参数 (2)将json转为get参数 (3)格式校验工具类 (4)数组操作工具类 (5)表单取值工具类 (6)时间转换工具类 ...

  4. TensorFlow 高维tenso常用工具函数

    tensorflow 常用工具函数 1. shape 重定义: tf.reshape() 2. 维度交换: tf.transpose() 3. 维度扩充: tf.expand_dims() 4. 维度 ...

  5. part4-2 流程控制二(循环结构,while、for循环,列表推导式、生成器推导式,常用工具函数,控制循环结构,4个简单实例)...

    循环语句在循环条件满足时,可反复执行某一段代码,这段被重复执行的代码称为循环体.在循环体中,需要在合适的时候把循环条件设置为假,从而结束循环:否则循环一直执行下去形成死循环.循环语句通常包含如下4个部 ...

  6. 56个JavaScript 实用工具函数助你提升开发效率!

    今天来看看JavaScript中的一些实用的工具函数,希望能帮助你提高开发效率!整理不易,如果觉得有用就点个赞吧! 实用工具函数.png 1. 数字操作 (1)生成指定范围随机数 export con ...

  7. 【总结】56个JavaScript 实用工具函数助你提升开发效率!

    作者:CUGGZ https://juejin.cn/post/7019090370814279693 又快到周五啦,快来一起摸鱼呀!今天来看看JavaScript中的一些实用的工具函数,希望能帮助你 ...

  8. 【嵌入式C语言】常用工具函数之数字字符串与十进制数字转换函数

    背景:在嵌入式开发中,有时候我们在协议中发送或者收到的数字都是十进制数字,而我们在人机交互时,需用通过字符串类型来显示该十进制数字,这就经常需要对十进制数字和数字字符串进行相互转换. 说明:下面给出的 ...

  9. JavaScript 自定义工具函数库

    文章目录 自定义工具函数库 函数相关 call()&apply()&bind() call(Fn,obj,.....args) apply(Fn,obj,args) bind(Fn,o ...

最新文章

  1. 5G加速下的云办公时代来临?阿里云新品服务器 - 无影云桌面的服务开通与体验,本地客户端连接阿里云无影云桌面演示
  2. poj 1584(凸包+点在凸多边形内+圆在凸多边形内)
  3. rn webview加载本地静态html,React Native - Webview 加载本地文件
  4. oem是什么生产方式
  5. PostgreSQL使用函数实现merge功能
  6. IO流之流的操作规律
  7. LayaAr 批量加载资源 LoaderManager
  8. 本机搭建PHP环境全教程(图文)
  9. linux 之TFTP的使用
  10. 使用CTex排版IEEE论文笔记
  11. 7-76 打印选课学生名单 (25分)
  12. 专访李华明:90后IT程序员的奋斗之路
  13. Glide-源码详解
  14. coreldraw课表设计作品_平面设计软件的详细资料来了~看看有你常用的吗?
  15. PTCMS安装搭建教程小说源码安装教程及自动采集
  16. 计算机教师教育教学特长,计算机教师教学计划
  17. 解析las文件_点云las文件读取
  18. 加密与解密第三版光盘ISO资料
  19. flutter几种常用的底部tab栏
  20. arduino并口屏_Adafruit_GFX驱动ILI9341 2.4寸并口屏

热门文章

  1. linux刻录win10u盘_手把手教你装系统之【制作官方win10安装U盘】
  2. elasticsearch实战篇
  3. java中正则表达式
  4. html怎样实现数据列表的下拉效果
  5. Spark 报错 : Error: bad symbolic reference. A signature in SparkContext.class refers to term conf
  6. 阿里云视频云 Retina 多媒体 AI 体验馆开张啦
  7. 疫情宅家促生“囤货经济”,北美零售业极限应考
  8. 深度揭秘“蚂蚁双链通”
  9. 阿里如何做到百万量级硬件故障自愈?
  10. 重磅!大数据知识总结和调参技巧开放下载了