0

addEventListenerIE 9および10の入力ファイル選択では、ファイル選択後にトリガーする必要がありますが、ファイル選択の2回目以降にトリガーされます。つまり、ファイルが選択されていない場合、最初の選択ではトリガーされず、その後はすべてのファイルに対してトリガーされますリスナー イベント トリガーの選択 (別のファイルが選択されている場合)。私のコードスニペット:

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 では問題があります。

4

3 に答える 3

4

古い IE バージョンは.addEventListener()メソッドをサポートしていません。要素にイベントを追加する代わりに.attachEvent()メソッドがあります。

次のaddEvent メソッドを使用します

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)
于 2013-04-20T05:16:55.310 に答える
3

IE の attachEvent 関数を使用する必要があります。

file.addEventListener ? file.addEventListener("change", handlefileselect, false) : file.attachEvent("onchange", handlefileselect);
于 2013-04-20T05:16:56.117 に答える
1

これを使用してみてください。チェックはしていませんが、ほとんどの IE の問題はヘッダー部分のこのタグで解決されました

<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
于 2013-04-20T05:21:36.413 に答える