javascript - IE兼容问题 动态生成的节点IE浏览器无法触发,求助
为情所困
为情所困 2017-06-26 10:56:54
0
4
848

代码很简单,就是动态生成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();
}
为情所困
为情所困

全部回复(4)
为情所困

ieclick()不能操作文档中没有的节点,所以你可以在click()前添加下面的语句

document.body.appendChild( input );
input.style.display = 'none';
input.click();

要想兼容ie9之前用attachEvent而不是addEventListener
还有ie9之前不兼容getElementsByClassName

学习ing

为什么 button 使用了 .onclick,后面的 input 却用了 .addEventListener 呢?

在 addEventListener 文档的 传统的 Internet Explorer 及其 attachEvent 方法 有说明:

对于 Internet Explorer 来说,在IE 9之前,你必须使用 attachEvent 而不是使用标准方法
addEventListener。

習慣沉默

IE8及以下没有addEventListener方法 可用attachEvent()方法监听事件 要注意attachEvent回调中的this指向的是window哦

大家讲道理

用下面这个来绑定事件

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");
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板