100 can't miss utility JS custom functions

  • 2020-03-30 02:16:57
  • OfStack

1, native JavaScript to achieve string length interception


function cutstr(str, len) {
    var temp;
    var icount = 0;
    var patrn = /[^x00-xff]/;
    var strre = "";
    for (var i = 0; i < str.length; i++) {
        if (icount < len - 1) {
            temp = str.substr(i, 1);
            if (patrn.exec(temp) == null) {
                icount = icount + 1
            } else {
                icount = icount + 2
            }
            strre += temp
        } else {
            break
        }
    }
    return strre + "..."
}

2, native JavaScript to get the domain host

function getHost(url) {
    var host = "null";
    if(typeof url == "undefined"|| null == url) {
        url = window.location.href;
    }
    var regex = /^w+://([^/]*).*/;
    var match = url.match(regex);
    if(typeof match != "undefined" && null != match) {
        host = match[1];
    }
    return host;
}

3. Native JavaScript clears Spaces

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

4. Replace everything with native JavaScript

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

5. Native JavaScript escapes HTML tags

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

6. Native JavaScript restores HTML tags

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

7. Native JavaScript time and 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
}

8. Native JavaScript determines whether it is a numeric type

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

9. Native JavaScript sets the 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;"
}

10. Native JavaScript gets the cookie value

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

11. Add native JavaScript to favorites

function AddFavorite(sURL, sTitle) {
    try {
        window.external.addFavorite(sURL, sTitle)
    } catch(e) {
        try {
            window.sidebar.addPanel(sTitle, sURL, "")
        } catch(e) {
            alert(" Join collection failed, please use Ctrl+D add ")
        }
    }
}

12. Native JavaScript is set as the home page

function setHomepage() {
    if (document.all) {
        document.body.style.behavior = 'url(#default#homepage)';
        document.body.setHomePage('http://www.jq-school.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 it in the address bar  about:config, Then put the items  signed.applets.codebase_principal_support  The value true")
            }
        }
        var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
        prefs.setCharPref('browser.startup.homepage', 'http://www.jq-school.com')
    }
}

13, native JavaScript judge IE6

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

14. Native JavaScript loading 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)
    }
}

15. Native JavaScript returns the content of the script

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

16. Native JavaScript clears script content

function stripscript(s) {
  return s.replace(/<script.*?>.*?</script>/ig, '');
}

17. Native JavaScript dynamically loads 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. = false;
      scriptNode.onload = function () {
        scriptNode. = true;
        JSLOADED[src] = 1;
      };
      scriptNode.onreadystatechange = function () {
        if((scriptNode.readyState == 'loaded' || scriptNode.readyState == 'complete') && !scriptNode. {
          scriptNode. = true;
          JSLOADED[src] = 1;
        }
      };
    } else if(text){
      scriptNode.text = text;
    }
    document.getElementsByTagName('head')[0].appendChild(scriptNode);
  } catch(e) {}
}

18. Native JavaScript returns the element object retrieved by ID

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

19. Native JavaScript returns the content of the browser version

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

20. General method of displaying native JavaScript elements

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

There is an insertBefore method in native JavaScript, but there is no insertAfter method. This is implemented using the following function

function insertAfter(newChild,refChild){
  var parElem=refChild.parentNode;
  if(parElem.lastChild==refChild){
    refChild.appendChild(newChild);
  }else{
    parElem.insertBefore(newChild,refChild.nextSibling);
  }
}

22. Browser binding element events are compatible in native JavaScript

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

23. The native JavaScript cursor stops behind the text and is called when the text box gets focus

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

24. Native JavaScript verifies whether 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);
    }
  }
}

25. Native JavaScript formats CSS style code

function formatCss(s){//Format code
  s = s.replace(/s*([{}:;,])s*/g, "$1");
  s = s.replace(/;s*;/g, ";"); //Clear the continuous semicolon
  s = s.replace(/,[s.#d]*{/g, "{");
  s = s.replace(/([^s]){([^s])/g, "$1 {nt$2");
  s = s.replace(/([^s])}([^n]*)/g, "$1n}n$2");
  s = s.replace(/([^s]);([^s}])/g, "$1;nt$2");
  return s;
}

26. Native JavaScript compression CSS style code

function yasuoCss (s) {//The compression code
  s = s.replace(//*(.|n)*?*//g, ""); // Remove the comments 
  s = s.replace(/s*([{}:;,])s*/g, "$1");
  s = s.replace(/,[s.#d]*{/g, "{"); //Fault-tolerant processing
  s = s.replace(/;s*;/g, ";"); //Clear the continuous semicolon
  s = s.match(/^s*(S+(s+S+)*)s*$/); //Remove head and tail space
  return (s == null) ? "" : s[1];
}

27. Native JavaScript gets the current path

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

28. Convert javascript tip to integer

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

29. Native JavaScript integer is resolved to an IP address

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

30. Native JavaScript checkbox with or without 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;
    }
  }
}


Related articles: