在Internet Explorer中收听更改事件

时间:2013-04-20 05:10:56

标签: javascript html internet-explorer

addEventListener用于IE 9和10中的输入文件选择应该在文件选择后触发,但是在第二次文件选择后触发,这意味着如果没有选择文件则首次选择它不会触发,在此之后,每个文件选择都会触发侦听器事件(如果选择了不同的文件)。我的代码片段:

HTML

<input type="file" name="imagefile" id="upload">

的JavaScript

var file = document.getElementById("upload");
file.addEventListener("change", handlefileselect, false);

function handlefileselect(event) {
    alert("file selected");
}

代码在Firefox和Chrome中运行正常,但IE存在问题。

3 个答案:

答案 0 :(得分:4)

旧的IE版本不支持.addEventListener()方法,而是使用.attachEvent()方法向元素添加事件。

使用以下addEvent method

function addEvent(evnt, elem, func) {
   if (elem.addEventListener)  // W3C DOM
      elem.addEventListener(evnt,func,false);
   else if (elem.attachEvent) { // IE DOM
      elem.attachEvent("on"+evnt, func);
   }
   else { // No much to do
      elem[evnt] = func;
   }
}

var file = document.getElementById("upload");
addEvent('change', file, handlefileselect)

答案 1 :(得分:3)

你应该为IE使用attachEvent函数。

file.addEventListener ? file.addEventListener("change", handlefileselect, false) : file.attachEvent("onchange", handlefileselect);

答案 2 :(得分:1)

尝试使用此功能,我没有检查,但大多数IE问题都是通过标题部分中的此标记解决的

<meta http-equiv="X-UA-Compatible" content="IE=edge">