javascript - 将addEventListener改成attachEvent,在IE8/IE6里面不能执行?
伊谢尔伦
伊谢尔伦 2017-04-11 12:06:20
0
3
515

为了实现输入表单提示文字特效,写了下面代码,为兼容IE8,添加了document.all检测浏览器,可是将addEventListener改成attachEvent,在IE8/IE6里面不能执行?

  
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复 (3)
Peter_Zhu

似乎 attachEvent 的事件要加 on 的,你试一下get_input[i].attachEvent('onfocus',fn);

    洪涛

    你把后面的东西都去掉,你会发现ie8其实支持的是addEventListener(不过有可能因为是调试器,所有支持的)

      大家讲道理

      attachEvent中this指向window,网上找了个解决方法,自己看下吧~

      function addEvent(element, type, handler) { //为每一个事件处理函数分派一个唯一的ID if (!handler.$$guid) handler.$$guid = addEvent.guid++; //为元素的事件类型创建一个哈希表 if (!element.events) element.events = {}; //为每一个"元素/事件"对创建一个事件处理程序的哈希表 var handlers = element.events[type]; if (!handlers) { handlers = element.events[type] = {}; //存储存在的事件处理函数(如果有) if (element["on" + type]) { handlers[0] = element["on" + type]; } } //将事件处理函数存入哈希表 handlers[handler.$$guid] = handler; //指派一个全局的事件处理函数来做所有的工作 element["on" + type] = handleEvent; }; //用来创建唯一的ID的计数器 addEvent.guid = 1; function removeEvent(element, type, handler) { //从哈希表中删除事件处理函数 if (element.events && element.events[type]) { delete element.events[type][handler.$$guid]; } }; function handleEvent(event) { var returnValue = true; //抓获事件对象(IE使用全局事件对象) event = event || fixEvent(window.event); //取得事件处理函数的哈希表的引用 var handlers = this.events[event.type]; //执行每一个处理函数 for (var i in handlers) { this.$$handleEvent = handlers[i]; if (this.$$handleEvent(event) === false) { returnValue = false; } } return returnValue; }; //为IE的事件对象添加一些“缺失的”函数 function fixEvent(event) { //添加标准的W3C方法 event.preventDefault = fixEvent.preventDefault; event.stopPropagation = fixEvent.stopPropagation; return event; }; fixEvent.preventDefault = function() { this.returnValue = false; }; fixEvent.stopPropagation = function() { this.cancelBubble = true; };
      function values() { var get_input = document.getElementsByTagName("input"); for (var i = 0; i < get_input.length; i++) { addEvent(get_input[i], 'focus', function() { if (this.value == this.defaultValue) { this.value = ''; } }); addEvent(get_input[i], 'blur', function() { if (this.value == '') { this.value = this.defaultValue; } }); } }; values();

      用jq不好么- -
      来源

        最新下载
        更多>
        网站特效
        网站源码
        网站素材
        前端模板
        关于我们 免责声明 Sitemap
        PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!