Painstakingly collect the most complete JavaScript and most practical tool functions in history. It is recommended to collect them!

Posted by mj99 on Tue, 19 Oct 2021 00:27:40 +0200

 

Add on method for element

Element.prototype.on = Element.prototype.addEventListener;
NodeList.prototype.on = function (event, fn) {,    []['forEach'].call(this, function (el) {        el.on(event, fn);    });    return this;};

Add a trigger method to the element  

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

Escape html tag

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

HTML tag escape

// HTML tag escape / / @ param {array. < domstring >} tokens of templatedata string type / / @ param {...}.. operation result of Vals expression placeholder 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;} / / call var HTML = saferhtml ` < p > this is an introduction to string templates < / P > `;

Cross browser binding events

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

Add favorites

function addFavorite(sURL, sTitle) {  try {    window.external.addFavorite(sURL, sTitle);  } catch (e) {    try {      window.sidebar.addPanel(sTitle, sURL, "");    } catch (e) {      alert("Failed to join the collection, please use Ctrl+D Add");    }  }}

Extract all URLs in the page code

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

Dynamically load script files

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

Returns the generic method at the top

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

base64 decoding

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

Confirm whether it is a valid keyboard input value  

function checkKey(iKey) {  if (iKey == 32 || iKey == 229) {    return true;  } /*Spaces and exceptions*/  if (iKey > 47 && iKey < 58) {    return true;  } /*number*/  if (iKey > 64 && iKey < 91) {    return true;  } /*letter*/  if (iKey > 95 && iKey < 108) {    return true;  } /*Numeric keypad 1*/  if (iKey > 108 && iKey < 112) {    return true;  } /*Numeric keypad 2*/  if (iKey > 185 && iKey < 193) {    return true;  } /*Symbol 1*/  if (iKey > 218 && iKey < 223) {    return true;  } /*Symbol 2*/  return false;}

Full width to half width conversion  

//iCase: 0 all to half, 1 half to all, others do not convert function chgcase (SSTR, ICASE) {if (typeof SSTR! = "string" | SSTR. Length < = 0 | (ICASE = = = 0 | ICASE = = 1)) {return SSTR;} var I, ORS = [], icode; if (ICASE) {/ * half - > all * / 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 {/ * full - > half * / 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("");}

Version comparison

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

Compress CSS style code  

function compressCss(s) {  //The compression code is like to replace a place in the same place (/ \ / / \ \ * (whichis also a popular way to go. The following is also a good way to achieve the following. The following is the following following: the following is the way to achieve the compression code. The following is the following is the number of the following. The following is the number of the following. The following is the number of the following is the number to replace. The following is the one to replace. The following is the way to replace a place (/ \ / \ / \ / / / \ / \ \ / \ \ \ \ \ \ \ \ * * / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / the following is the following is the same same is the same as the same place place place (/ \ or or or or or or or the \ \ \ {\ {\ {\ {\ {\ \ \ \ \ \ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ tobeat

Get current path

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

String length interception

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

Time date format conversion

Date.prototype.format = function(formatStr) {  var str = formatStr;  var Week = ["day", "one", "two", "three", "four", "five", "six"];  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;};
// Or 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), / / 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"));

Cross browser delete event

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

Determines whether to end with a string  

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

Return script content

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

Formatting CSS style code

function formatCss(s) {  //The formatting code for S = s.replace (/ / \ s \ {\ {\} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \, followedalong along along along along with the rest of the format format for the following following: S = s.replace (/ / \ s * followedfollowed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed followed replacement (/ ((([\ \ \ \ {\ \ \ \ \ {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \, * * / g, or or or simply simply simply simply simply simply simply simply simply simply simply simply, "";;;;;;;;; / / / flatflatflatflatflatflatflatflatdemodemodemodemodemodemodemodemodemodemodemodemodemodemodemodemodemodemos]; ([^ \ s \}]) / g, "$1; \ n \ T $2"); return s;}

Get cookie value

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

GET the value of GET parameter in URL

// Usage: if the address is test.htm? T1 = 1 & T2 = 2 & T3 = 3, you can get: 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];}

Gets the initialization size of the mobile device

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

  Get page height

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

Get page scrollLeft

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

Get page scrollTop

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

Get page visual height

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

Gets the visual width of the page

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

Get page width

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

Get mobile device screen width

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

Get the location where the web page is rolled up

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

Get parameters on URL

// Get a parameter value in the URL, case insensitive. / / get a parameter value in the URL, case insensitive. / / the default is to take the parameter in 'hash'. / / if you pass other parameters, you can take the parameter in 'search' / @ param {String} name parameter 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;}

Verify that the URL link is valid

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

Gets the width and height of the visible range of the form

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

Gets the maximum size of the mobile device  

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

Determine whether Android mobile device access

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

Determine whether Apple mobile device access

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

Determine whether it is a numeric type

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

Is it a certain type of mobile phone model

// Judge const isiphonex = () = > {/ / X XS, XS max, XR const xseriesconfig = [{devicepixelratio: 3, width: 375, height: 812}, {devicepixelratio: 3, width: 414, height: 896}, {devicepixelratio: 2, width: 414, height: 896}]; / / H5 if (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;};

Determine whether to move the device

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

Determine whether the mobile phone number

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        ? "Unicom"        : a.indexOf(r) >= 0        ? "telecom"        : "1349" == d        ? "telecom"        : i.indexOf(r) >= 0        ? "move"        : "unknown");  return s;}

Determine whether it is a mobile device access

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

Determine whether the mouse moves out of the event

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

Determine whether the Touch screen

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

Determine whether it is a web address

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

Determine whether to open the window

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

Load style file

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

Replace address bar

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

Resolve offsetX compatibility issues

// For Firefox, offsetx / yfunction getoffset (E) {var target = e.target, / / the currently triggered target objects eventcoord, pagecoord, offsetcoord;
  // Calculate the distance from the current trigger element to the document pageCoord = getPageCoord(target);
  // Calculate the distance from the cursor to the document eventcoord = {X: window.pagexoffset + e.clientx, Y: window.pageyoffset + e.clienty};
  // Subtract to obtain the coordinates of the cursor to the first positioned parent element. Offsetcoord = {X: eventcoord. X - pagecoord. X, Y: eventcoord. Y - pagecoord. Y}; return offsetcoord;}
function getPageCoord(element) {  var coord = { X: 0, Y: 0 };  // Calculate the sum of offsetLeft or offsetTop values from the current trigger element to the root node / / while (element) {coord. X + = element. offsetLeft; coord. Y + = element. offsetTop; element = element. offsetParent;} return coord;}

General method for opening a form

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

Splicing key value pairs into URL s with parameters

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('&')) }

Remove url prefix

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

Replace all

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

resize operation

(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) {      //Execute the corresponding operation when the width of the window is less than 1255} else {/ / execute the corresponding operation when the width of the window is greater than 1255}}; if (window.addEventListener) {    window.addEventListener("resize", function() {      fn();    });  } else if (window.attachEvent) {    window.attachEvent("onresize", function() {      fn();    });  }  fn();}) ();

Scroll to top

// Use document.documentelement.scrolltop or document.body.scrolltop to obtain the distance to the top, and scroll a small distance from the top / /. Use window.requestAnimationFrame() to scroll. / /@ example// scrollToTop();function scrollToTop() {  var c = document.documentElement.scrollTop || document.body.scrollTop;
  if (c > 0) {    window.requestAnimationFrame(scrollToTop);    window.scrollTo(0, c - c / 8);  }}

Set cookie value

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

Set as home page

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(          " This operation is rejected by the browser. If you want to enable this function, please enter about:config in the address bar, and then set the value of the item signed.applets.codebase_principal_support to true ";}} var prefs = components. Classes [" @ Mozilla. Org / preferences service; 1 "]. Getservice (components. Interfaces. Nsprefbranch); prefs. Setcharpref (" browser.startup.homepage", " http://w3cboy.com ");  }}

Alphabetically sorts each row in an array

function setSort() {  var text = K1.value    .split(/[\r\n]/)    .sort()    .join("\r\n"); //Sequence var test = k1.value. Split (/ [\ R \ n] /). Sort(). Reverse(). Join ("\ R \ n"); / / reverse sequence k1.value = k1.value! = text? Text: test;}

Delayed execution

// For example, sleep(1000) means waiting for 1000 milliseconds, which can also be realized from the perspectives of Promise, Generator, async / wait. / / Promise sleep = time = > {return new Promise (resolve = > setTimeout (resolve, time));};
sleep(1000).then(() => {  console.log(1);});
 
// Generatorfunction* sleepGenerator(time) {  yield new Promise(function(resolve, reject) {    setTimeout(resolve, time);  });}
sleepGenerator(1000)  .next()  .value.then(() => {    console.log(1);  });
//asyncfunction 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);

Determines whether to start with a string

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

Clear script content

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

Time personalized output function

/*1,< 60s, It is displayed as "just" 2, > = 1min & & < 60min, showing the difference from the current time "XX minutes ago" 3, > = 60min & & < 1day, showing the difference from the current time "today XX:XX" 4, > = 1day & & < 1year, showing the date "XX:XX" 5, > = 1year, showing the specific date "XX:XX, XX, XXXX"*/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 + "year" + month + "month" + day + "day " + hour + ":" + minute;  } else {    var pastTime = curDate - date,      pastH = pastTime / 3600000;
    if (pastH > curHour) {      timeStr = month + "month" + day + "day " + hour + ":" + minute;    } else if (pastH >= 1) {      timeStr = "today " + hour + ":" + minute + "branch";    } else {      var pastM = curDate.getMinutes() - minute;      if (pastM > 1) {        timeStr = pastM + "Minutes ago";      } else {        timeStr = "just";      }    }  }  return timeStr;}

Full angle to half angle function

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

Half angle to full angle function

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

Amount capitalization conversion function

function transform(tranvalue) {  try {    var i = 1;    var dw2 = new Array("", "ten thousand", "Hundred million"); //Large unit var dw1 = new Array("ten", "hundred", "thousand"); / / small unit var dw = new Array("zero", "one", "two", "three", "four", "Five", "six", "seven", "eight", "Nine") ; / / the integer part is converted from lowercase to uppercase and displayed in the total uppercase text box. / / separate the integer from the decimal var source = splits (tranvalue); VAR num = source [0]; VAR dig = source [1]; / / convert the integer part var k1 = 0; / / small unit var k2 = 0; / / large unit var sum = 0; VAR STR = ""; VAR len = source [0] . length; / / the length of the integer for (I = 1; I < = len; I + +) {var n = source [0]. Charat (len - I); / / get the number on a certain digit var BN = 0; if (len - I - 1 > = 0) {BN = source [0]. Charat (len - I - 1); / / get the number on the previous digit} sum = sum + number (n); if (sum! = 0) {STR = DW [number (n)] . concat (STR); / / obtain the upper case number corresponding to the number and insert it in front of the str string. If (n = = "0") sum = 0;} if (len - I - 1 > = 0) {/ / if (K1! = 3) {/ / add the small unit if (BN! = 0) {STR = dw1 [K1]. Concat (STR);} K1 + +;} else {/ / without adding the small unit, increase the unit K1 = 0; VAR temp = str.charat (0); if (temp = = "ten thousand" | temp = = "hundred million") / / if there is no number in front of the large unit, round off the large unit STR = str.substr (1, str.length - 1); STR = dw2 [k2]. Concat (STR); sum = 0;}} if (K1 = = 3) {/ / from small units to thousands of large units, enter one k2 + +;} / / convert the decimal part var strdig = ""; if (dig! = ") {var n = dig.charat (0); if (n! = 0) {strdig + = DW [number (n)] +" corner "; / / add a number} var n = dig.charat (1); if (n! = 0) {strdig + = DW [number (n)] +" minute "; / / add a number}} STR + = "Yuan" + strdig;} catch (E) {return "0 yuan";} return str;} / / split integers and decimals function splits (tranvalue) {VaR value = new array ("", ""); temp = tranvalue. Split ("..); for (VaR I = 0; I < temp. Length; I + +) {value = temp;} return value;}

Clear spaces

String.prototype.trim = function() {  var reExtraSpace = /^\s*(.*?)\s+$/;  return this.replace(reExtraSpace, "$1");};
// Clear the left whitespace function ltrim (s) {return s.replace (/ ^ (\ s * | *) /, "");}
// Clear the right space function rtrim (s) {return s.replace (/ (\ s * | *) $/, "");}

Random number timestamp

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

Implement utf8 decoding

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

Check whether it is a number and whether the decimal places of the number are consistent with the parameter floats

Verification rules:

  • If the parameter floats has a value, check the number of digits after the decimal point of the number.

  • If the parameter floats has no value, only check whether it is a number.

function isNum(value,floats=null){    let regexp = new RegExp(`^[1-9][0-9]*.[0-9]{${floats}}$|^0.[0-9]{${floats}}$`);    return typeof value === 'number' && floats?regexp.test(String(value)):true;}
function anysicIntLength(minLength,maxLength){    let result_str = '';    if(minLength){        switch(maxLength){            case undefined:                result_str = result_str.concat(`{${minLength-1}}`);                break;            case null:                result_str = result_str.concat(`{${minLength-1},}`);                break;            default:                result_str = result_str.concat(`{${minLength-1},${maxLength-1}}`);        }    }else{        result_str = result_str.concat('*');    }
    return result_str;}

 

Check whether it is a non-zero positive integer

function isInt(value,minLength=null,maxLength=undefined){    if(!isNum(value)) return false;
    let regexp = new RegExp(`^-?[1-9][0-9]${anysicIntLength(minLength,maxLength)}$`);    return regexp.test(value.toString());}

Check whether it is a non-zero positive integer

function isPInt(value,minLength=null,maxLength=undefined) {    if(!isNum(value)) return false;
    let regexp = new RegExp(`^[1-9][0-9]${anysicIntLength(minLength,maxLength)}$`);    return regexp.test(value.toString());}

Check whether it is a non-zero negative integer

function isNInt(value,minLength=null,maxLength=undefined){    if(!isNum(value)) return false;    let regexp = new RegExp(`^-[1-9][0-9]${anysicIntLength(minLength,maxLength)}$`);    return regexp.test(value.toString());}

Check whether the integer is within the value range

Verification rules:

  • minInt is the smallest integer in the value range

  • maxInt is the largest integer in the value range

function checkIntRange(value,minInt,maxInt=9007199254740991){    return Boolean(isInt(value) && (Boolean(minInt!=undefined && minInt!=null)?value>=minInt:true) && (value<=maxInt));}

Is the mobile phone number of Chinese mainland verified?

function isTel(value) {    return /^1[3,4,5,6,7,8,9][0-9]{9}$/.test(value.toString());}

Check whether it is a fax or fixed number in Chinese mainland.  

function isFax(str) {    return /^([0-9]{3,4})?[0-9]{7,8}$|^([0-9]{3,4}-)?[0-9]{7,8}$/.test(str);}

Check whether it is an email address

function isEmail(str) {    return /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(str);}

Check whether it is a QQ number

Verification rules:

  • 5-13 bit integer not starting with 0

function isQQ(value) {    return /^[1-9][0-9]{4,12}$/.test(value.toString());}

Verify whether it is a web address

Verification rules:

  • Start with or without https: / /, http: / /, ftp: / /, rtsp: / /, mms: / /

  • You may not start with www (or other secondary domain names), only the domain name

  • /% *? Is allowed in web page address@& And other allowed symbols

function isURL(str) {    return /^(https:\/\/|http:\/\/|ftp:\/\/|rtsp:\/\/|mms:\/\/)?[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/.test(str);}

Check whether it is an IP address without port number

Verification rules:

  • The IP format is xxx.xxx.xxx.xxx, and the value range of each number is 0-255

  • Numbers other than 0 cannot start with 0, such as 02

function isIP(str) {    return /^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$/.test(str);}

Verify whether it is an IPv6 address

Verification rules:

  • Support IPv6 normal format

  • Support IPv6 compression format

function isIPv6(str){    return Boolean(str.match(/:/g)?str.match(/:/g).length<=7:false && /::/.test(str)?/^([\da-f]{1,4}(:|::)){1,6}[\da-f]{1,4}$/i.test(str):/^([\da-f]{1,4}:){7}[\da-f]{1,4}$/i.test(str));}

Is the second generation ID card certified in mainland China?

Verification rules:

  • There are 18 bits in total, and the last bit can be x (both case and case)

  • Cannot start with 0

  • The date of birth will be verified: the year can only start with 18 / 19 / 2 *, the month can only be 01-12 and the date can only be 01-31

function isIDCard(str){    return /^[1-9][0-9]{5}(18|19|(2[0-9]))[0-9]{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)[0-9]{3}[0-9Xx]$/.test(str);}

Is the Chinese mainland postal encoding checked?

Parameter value is a number or string

Verification rules:

  • 6 bits in total and cannot start with 0

function isPostCode(value){    return /^[1-9][0-9]{5}$/.test(value.toString());}

Verify whether the two parameters are identical, including type

Verification rules:

  • The values are the same and the data types are the same

function same(firstValue,secondValue){    return firstValue===secondValue;}

Check whether the length of characters is within the specified range

Verification rules:

  • minInt is the minimum length in the value range

  • maxInt is the maximum length in the value range

function lengthRange(str,minLength,maxLength=9007199254740991) {    return Boolean(str.length >= minLength && str.length <= maxLength);}

Verify that the character begins with a letter

Verification rules:

  • Must start with a letter

  • The first letter is not case sensitive

function letterBegin(str){    return /^[A-z]/.test(str);}

Check whether the character is a pure number (integer)

Verification rules:

  • All characters are positive integers (including 0)

  • Can start with 0

functionpureNum(str) {    return /^[0-9]*$/.test(str);}
function anysicPunctuation(str){    if(!str) return null;    let arr = str.split('').map(item => {        return item = '\\' + item;    });    return arr.join('|');}
function getPunctuation(str){    return anysicPunctuation(str) || '\\~|\\`|\\!|\\@|\\#|\\$|\\%|\\^|\\&|\\*|\\(|\\)|\\-|\\_|\\+|\\=|\\||\\\|\\[|\\]|\\{|\\}|\\;|\\:|\\"|\\\'|\\,|\\<|\\.|\\>|\\/|\\?';}
function getExcludePunctuation(str){    let regexp = new RegExp(`[${anysicPunctuation(str)}]`,'g');    return getPunctuation(' ~`!@#$%^&*()-_+=\[]{};:"\',<.>/?'.replace(regexp,''));}

 

Returns the number of types (letters, numbers, punctuation marks) of a string

The origin of LIP abbreviation: L(letter) + I(uint number) + P(punctuation punctuation)

Description of parameter punctuation:

  • Punctuation is an acceptable set of punctuation marks

  • To customize the symbol set, such as "include only dashes and underscores", set the parameter to "-"

  • If no value is passed or null by default, the internal default punctuation set is other English punctuation except empty: ~ `! @#$%^&* ()-_+= []{};: "',<.>/?

function getLIPTypes(str,punctuation=null){    let p_regexp = new RegExp('['+getPunctuation(punctuation)+']');    return /[A-z]/.test(str) + /[0-9]/.test(str) + p_regexp.test(str);}

Check whether the number of types formed by the string is greater than or equal to the value of the parameter num. it is usually used to check the complexity of the password set by the user.

Verification rules:

  • The parameter num is the type to be formed (letters, numbers, punctuation marks), and the value can only be 1-3.

  • The value of the default parameter num is 1, which means that it contains at least one of letters, numbers and punctuation marks

  • If the value of parameter num is 2, it means that it contains at least 2 of letters, numbers and punctuation marks

  • If the value of parameter num is 3, it means that it must contain letters, numbers and punctuation marks at the same time

  • The parameter punctuation refers to the acceptable punctuation set. For specific settings, please refer to the explanation of punctuation set in getLIPTypes() method.

function pureLIP(str,num=1,punctuation=null){    let regexp = new RegExp(`[^A-z0-9|${getPunctuation(punctuation)}]`);    return Boolean(!regexp.test(str) && getLIPTypes(str,punctuation)>= num);}

Clear all spaces

function clearSpaces(str){    return str.replace(/[ ]/g,'');}

Clear all Chinese characters (including Chinese punctuation marks)

function clearCNChars(str){    return str.replace(/[\u4e00-\u9fa5]/g,'');}

Clear all Chinese characters and spaces

function clearCNCharsAndSpaces(str){    return str.replace(/[\u4e00-\u9fa5 ]/g,'');}

Clear all English punctuation (including spaces) except the reserved punctuation set

All English punctuation marks are: ~ `! @#$% ^ & * () - + = [] {};: "', <. > /?

The parameter excludePunctuation refers to the set of punctuation symbols to be retained. For example, if the passed value is' ', That means clear_ All English punctuation except.

function clearPunctuation(str,excludePunctuation=null){    let regexp = new RegExp(`[${getExcludePunctuation(excludePunctuation)}]`,'g');    return str.replace(regexp,'');}

Verify whether spaces are included

function haveSpace(str) {    return /[ ]/.test(str);}

Verify whether Chinese characters (including Chinese punctuation marks) are included

function haveCNChars(str){    return /[\u4e00-\u9fa5]/.test(str);}

Recommended reading:

Painstakingly collect the most complete JavaScript and the most practical tool function methods in the history, and it is recommended to collect them!

Topics: Javascript html