Javascript 在Internet Explorer中侦听更改事件

Javascript 在Internet Explorer中侦听更改事件,javascript,html,internet-explorer,Javascript,Html,Internet Explorer,addEventListener对于IE 9和10中的输入文件选择,应在文件选择后触发,但对于文件选择,它会在第二次后触发,这意味着如果第一次未选择任何文件,则对于第一次选择,它不会触发,并且对于每次文件选择,侦听器事件都会触发(如果选择了不同的文件)。我的代码段: HTML 该代码在Firefox和Chrome中运行良好,但在IE中存在问题。旧的IE版本不支持method,它有一个向元素添加事件的方法 使用以下命令 你应该为IE使用attachEvent函数 file.addEventList

addEventListener
对于IE 9和10中的输入文件选择,应在文件选择后触发,但对于文件选择,它会在第二次后触发,这意味着如果第一次未选择任何文件,则对于第一次选择,它不会触发,并且对于每次文件选择,侦听器事件都会触发(如果选择了不同的文件)。我的代码段:

HTML


该代码在Firefox和Chrome中运行良好,但在IE中存在问题。

旧的IE版本不支持method,它有一个向元素添加事件的方法

使用以下命令


你应该为IE使用attachEvent函数

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

尝试使用这个,我没有检查,但是大多数IE问题都是通过标题部分的这个标签解决的

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


明白了。谢谢..但为什么我收到这么晚的响应?第一个文件选择的意思是更改事件功能不会执行,但在那之后,对于每个文件选择,事件都会触发原因是什么。ie 9和10都会发生这种情况。
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)
file.addEventListener ? file.addEventListener("change", handlefileselect, false) : file.attachEvent("onchange", handlefileselect);
<meta http-equiv="X-UA-Compatible" content="IE=edge">