在Internet Explorer中使用setInterval - 无法正常工作? jQuery的

时间:2013-12-20 20:33:33

标签: jquery internet-explorer setinterval

我的网站上有一个上传区域,当在IE9-11中使用时,文件路径包含文件名中的C:\ fakepath \ preface。所以我构建了一个解决方法来删除它,但它只适用于FF和Chrome。在IE中使用时,字段不会更新。我认为这是setInterval电话的问题,但我不确定。以下是我的代码。这是一个显示问题的小提琴(在IE中用于复制问题):http://jsfiddle.net/daQD6/5/

$(document).ready(function () {
    setInterval(running, 1);
    function running() {
        var filenameIn = $('input[type=file]').val();
        var filenameOut = filenameIn.split('\\').pop();
        $('#path').text(filenameIn);
        $('#result').text(filenameOut);
    }
});

有关IE内变通方法或问题原因的任何想法?非常感谢和节日快乐!

2 个答案:

答案 0 :(得分:4)

您的jQuery版本(v.1.10.1)中的错误:http://bugs.jquery.com/ticket/13980

使用较新版本 - v 1.10.2及更高版本具有此修复程序。

答案 1 :(得分:2)

Chris Hardie已经回答了你的IE问题,但我想提一些关于文件输入的注意事项。

我已更新您的fiddle(并根据Chris的建议更改了jQuery版本)以使用html5rocks中的代码,在使用表单输入进行选择部分。

<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>

  function handleFileSelect(evt) {
    var files = evt.target.files; // FileList object

    // files is a FileList of File objects. List some properties.
    var output = [];
    for (var i = 0, f; f = files[i]; i++) {
      output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
                  f.size, ' bytes, last modified: ',
                  f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
                  '</li>');
    }
    document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
  }

  document.getElementById('files').addEventListener('change', handleFileSelect, false);

您会注意到,如果您使用与文件输入关联的事件,您始终会在evt.target.files[0].name中获取不带路径的文件名。如果您使用事件流程,则无需setInterval