javascript - IE兼容问题 动态生成的节点IE浏览器无法触发,求助
问题描述
代码很简单,就是动态生成input标签,来实现change事件无法处理相同文件。在chrome,firefox中都有效,但在ie浏览器中无法触发打印3.求助!!!
var button=document.getElementsByClassName(’button’)[0];var imgBox=document.getElementsByClassName(’imgBox’)[0];button.onclick=function(){ inputImg();}function inputImg(){ var input=document.createElement(’input’); input.type=’file’; input.addEventListener(’change’,function(e){console.log(3); });input.click();}
问题解答
回答1:ie下click()不能操作文档中没有的节点,所以你可以在click()前添加下面的语句
document.body.appendChild( input );input.style.display = ’none’;input.click();
要想兼容ie9之前用attachEvent而不是addEventListener。还有ie9之前不兼容getElementsByClassName
回答2:为什么 button 使用了 .onclick,后面的 input 却用了 .addEventListener 呢?
在 addEventListener 文档的 传统的 Internet Explorer 及其 attachEvent 方法 有说明:
对于 Internet Explorer 来说,在IE 9之前,你必须使用 attachEvent 而不是使用标准方法addEventListener。
回答3:IE8及以下没有addEventListener方法 可用attachEvent()方法监听事件 要注意attachEvent回调中的this指向的是window哦
回答4:用下面这个来绑定事件
var addEvent = function(elem, type, handler){ if(window.addEventListener){addEvent = function(elem, type, handler){ elem.addEventListener(type, handler, false);}; }else if(window.attachEvent){addEvent = function(elem, type, handler){ elem.attachEvent(’on’ + type, handler);}; } addEvent(elem, type, handler);};addEvent(input, 'change', function(e){ alert('changed');});
相关文章:
1. ueditor上传服务器提示后端配置项没有正常加载,求助!!!!!2. javascript - vue生成一维码?求助!!!!!急3. javascript - 求助关于js正则问题4. 紧急求助-我们的一位同事突然离职,需要一个后端的同事,项目才能进行,停滞了,那位可以帮帮忙?5. 调用百度翻译API,在JAVA项目可以翻译,在android中却不行。求助6. android-studio - 一直无法下载android studio的 安卓模拟器求助7. 求助一个Android控件名称8. PHP求助,求帮忙谢谢各位9. php安装lpsolve 扩展求助10. angular.js - angular post的Content-Type被设置,导致不能上传图片,求助!!
![$fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题](http://www.haobala.com/attached/image/news/202205/093622cb60.png)