• JavaScript常用工具函数汇总(一)


    提示:前端查漏补缺,仅代表个人观点


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、为元素添加on方法

    Element.prototype.on = Element.prototype.addEventListener;
    NodeList.prototype.on = function (event, fn) {[]['forEach'].call(this, function (el) {
            el.on(event, fn);
        });
        return this;
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    二、转义html标签

    function HtmlEncode(text) {
      return text
        .replace(/&/g, "&")
        .replace(/\"/g, '"')
        .replace(/</g, "<")
        .replace(/>/g, ">");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    三、HTML标签转义

    // @param {Array.} 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, "&")
          .replace(/</g, "<")
          .replace(/>/g, ">");
        // Don't escape special characters in the template.
        s += templateData[i];
      }
      return s;
    }
    // 调用
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    四、跨浏览器绑定事件

    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;
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    五、加入收藏夹

    将网站加入收藏夹

    function addFavorite(sURL, sTitle) {
      try {
        window.external.addFavorite(sURL, sTitle);
      } catch (e) {
        try {
          window.sidebar.addPanel(sTitle, sURL, "");
        } catch (e) {
          alert("加入收藏失败,请使用Ctrl+D进行添加");
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    六、返回顶部的通用方法

    当页面滚动到下方,想返回页面顶部

    function backTop(btnId) {
      var btn = document.getElementById(btnId);
      var d = document.documentElement;
      var b = document.body;
      window.onscroll = set;
      btn.style.display = "none";
      btn.onclick = function() {
        btn.style.display = "none";
        window.onscroll = null;
        this.timer = setInterval(function() {
          d.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
          b.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);
          if (d.scrollTop + b.scrollTop == 0)
            clearInterval(btn.timer, (window.onscroll = set));
        }, 10);
      };
      function set() {
        btn.style.display = d.scrollTop + b.scrollTop > 100 ? "block" : "none";
      }
    }
    //调用
    backTop("goTop");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    七、版本对比

    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    八、压缩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];
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    【Android 屏幕适配】屏幕适配通用解决方案 ③ ( 自定义组件解决方案 | 获取设备状态栏高度 | 获取设备屏幕数据 )
    Gartner“客户之声”最高分,用户体验成中国数据库一大突破口
    “拳头”重拳出击,Valorant监控来袭,网络环境改善?隐私安全?
    VLAN综合实验
    1、6链接伪类选择器
    Ros2第一个节点程序调试(C++)
    升级打怪拿offer,10w+字总结的Java面试题(附答案)够你刷
    LeetCode-热题100-笔记-day27
    ubuntu 搭建RKNN-Toolkit环境
    ClickHouse 挺快,esProc SPL 更快
  • 原文地址:https://blog.csdn.net/weixin_43523043/article/details/126968149