IE8支持type =“file”?

时间:2011-09-16 10:59:25

标签: html internet-explorer-8

我在显示图像的php页面上遇到了<input type="file">支持IE8的问题,点击该图片会打开文件浏览器以选择要上传的文件。

这适用于Firefox和Chrome,我很确定问题来自<input type="file">及其对IE8的支持。 IE8上的结果是图像没有显示,如果我点击图像的白色矩形没有任何反应......

以下是代码:

<div class="file_wrap">
   <input id="file" type="file" name="file" onchange="sendfile();" />
</div>

CSS:

.file_wrap {
   background: url('icon/add.gif');
   overflow:   hidden;
   width:      116px;
   height:     147px;
   cursor:     hand;
}

.file_wrap input {
   opacity:    0;
   font-size:  999px;
   cursor:     hand;
}

也许有些人之前遇到过这个问题?

2 个答案:

答案 0 :(得分:5)

明确不鼓励<input type=file>元素的自定义样式。

首先,它的默认外观在各种浏览器中完全不同(你没有提到Safari,它也使得它与其他浏览器的呈现方式截然不同)。仅这一点就很难很好地设计它。

但更重要的是,由于存在潜在的安全问题,大多数浏览器会主动阻止大量标准CSS和Javascript操作与file元素一起使用。

为了避免恶意脚本拦截或更改文件名和路径,会阻止某些Javascript。如果允许这种情况可能发生的影响相当明显。

此外,该元素通常只允许使用CSS进行相当少量的样式。这是因为恶意页面为元素设置样式,使其看起来不像文件元素,从而诱使用户上传他们不应该上传的文件。

This page提供了有关该主题的进一步阅读,并提供了有关成功样式的提示。

希望有所帮助。

答案 1 :(得分:2)

与Chrome和Firefox不同,IE8在点击稍后包含文件名的文本字段时不会打开“选择文件”对话框,因此这个“黑客”将无效。

我认为你无能为力。如果您想为文件上传字段设置自定义样式,请考虑使用基于Flash的解决方案,例如SWFUpload