• 移除事件的兼容性处理


    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
      <input type="button" value="按钮" id="btn">
      <script src="common.js"></script>
      <script>
        var btn = my$('btn');
        function btnClick() {
          alert('hello');
          // 移除事件
          removeEventListener(btn, 'click', btnClick);
        }
        addEventListener(btn, 'click', btnClick);
      </script>
    </body>
    </html>
    common代码
    function my$(id) {
      return document.getElementById(id);
    }
    
    // 处理浏览器兼容性
    // 获取第一个子元素
    function getFirstElementChild(element) {
        var node, nodes = element.childNodes, i = 0;
        while (node = nodes[i++]) {
            if (node.nodeType === 1) {
                return node;
            }
        }
        return null;
    }
    
    // 处理浏览器兼容性
    // 获取下一个兄弟元素
     function getNextElementSibling(element) {
        var el = element;
        while (el = el.nextSibling) {
          if (el.nodeType === 1) {
              return el;
          }
        }
        return null;
      }
    
    
    // 处理innerText和textContent的兼容性问题
    // 设置标签之间的内容
    function setInnerText(element, content) {
      // 判断当前浏览器是否支持 innerText
      if (typeof element.innerText === 'string') {
        element.innerText = content;
      } else {
        element.textContent = content;
      }
    }
    
    // 处理注册事件的兼容性问题
    // eventName, 不带on,  click  mouseover  mouseout
    function addEventListener(element, eventName, fn) {
      // 判断当前浏览器是否支持addEventListener 方法
      if (element.addEventListener) {
        element.addEventListener(eventName, fn);  // 第三个参数 默认是false
      } else if (element.attachEvent) {
        element.attachEvent('on' + eventName, fn);
      } else {
        // 相当于 element.onclick = fn;
        element['on' + eventName] = fn;
      }
    }
    
    // 处理移除事件的兼容性处理
    function removeEventListener(element, eventName, fn) {
      if (element.removeEventListener) {
        element.removeEventListener(eventName, fn);
      } else if (element.detachEvent) {
        element.detachEvent('on' + eventName, fn);
      } else {
        element['on' + eventName] = null;
      }
    }
    
    // 获取页面滚动距离的浏览器兼容性问题
    // 获取页面滚动出去的距离
    function getScroll() {
      var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
      var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
      return {
        scrollLeft: scrollLeft,
        scrollTop: scrollTop
      }
    }
    
    // 获取鼠标在页面的位置,处理浏览器兼容性
    function getPage(e) {
      var pageX = e.pageX || e.clientX + getScroll().scrollLeft;
      var pageY = e.pageY || e.clientY + getScroll().scrollTop;
      return {
        pageX: pageX,
        pageY: pageY
      }
    }
  • 相关阅读:
    Monkey界面版测试工具
    手游兼容性测试
    周版本制度
    08 | 事务到底是隔离的还是不隔离的?
    jackson
    localDateTime和Date
    服务器被攻击后数据库密码被破解
    GC收集器
    linux安装nginx,设置代理,负载均衡
    微信(公众,商户,开放)平台的区别
  • 原文地址:https://www.cnblogs.com/jiumen/p/11413583.html
Copyright © 2020-2023  润新知