有没有人设法从https://github.com/aFarkas/webshim/获取filereader填充程序以在IE9中工作。

event.target.files是未定义的,我无法获得有关所选文件的任何信息?

我有

$('#fp_file').on('change',function() {
    fileSelected( $(this) );
});

// File selected
function fileSelected(ele)
{

var file = $(ele).prop('files')[0];

var fileSize = 0;

if(file)
{
  if(file.size > 1024 * 1024)
  {
      fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
  }
  else
  {
      fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';
  }

  $('#fileName').html(file.name);
  $('#fileSize').html(fileSize);
  $('#fileType').html(file.type);
  $('#file_dets').show('slide');

}
else
{
  alert('no file : ' + file);
}


}

以及以下HTML ...

<!DOCTYPE html>
<html>
<head>
<title>Financial Promotions Form</title>
<link rel="stylesheet" type="text/css" href="financial_promotion.css" />
<script src="jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="js-webshim/minified/extras/modernizr-custom.js" type="text/javascript"></script>
<script src="js-webshim/minified/polyfiller.js" type="text/javascript"></script>

</head>
<body>

<div id="wrapper">

<form id="financial_promotion" action="financial_promotions.pl" method="post" enctype="multipart/form-data">
            <fieldset>
                <legend>Promotion Documentation&nbsp;</legend>
                    <label for="fp_file">Upload File</label>

                    <input class="ws-filereader" type="file" name="fp_file" id="fp_file" />

            </fieldset>
            <fieldset id="file_dets">
                <legend>File Information</legend>
                <div>
                    <label for="fileName">Name</label><span id="fileName"></span>
                </div>
                <div>
                    <label for="fileSize">Size</label><span id="fileSize"></span>
                </div>
                <div>
                    <label for="fileType">Type</label><span id="fileType"></span>
                </div>
            </fieldset>
   </form>
   </div>

   </body>
    </html>


但是,我无法访问已选择的文件,使用$(ele).prop('files')[0];event.target.files或任何其他组合似乎都没有关系,在IE9中始终是未定义的吗?

最佳答案

呸骗子!

GITHUB上的示例注释了使它起作用的位!!!

//webshims.setOptions('basePath', '/js-webshim/minified/shims/');


我在文档中看到了这个错误,并错误地认为这是在说-查看此设置-不要使用它! -注释掉的代码的本质也是如此。

我需要做的就是正确设置basePath,它可以工作。

webshims.setOptions({
    'basePath':'/my/folder/path/js-webshim/minified/shims/'
    });

webshims.polyfill('forms forms-ext filereader');


希望它对所有其他见过我的线程的人有所帮助,就像我在OP一样没有毛发了!

---->更新2014年5月27日
我相信此polyfil / shim不起作用。一旦它在IE9中运行,您将发现Flash对象将覆盖输入元素,因此,在选择文件时,基础输入元素不会填充所选文件,因此该表单无法提交为输入为空。

08-03 21:36