我在显示图像的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;
}
也许有些人之前遇到过这个问题?
答案 0 :(得分:5)
明确不鼓励<input type=file>
元素的自定义样式。
首先,它的默认外观在各种浏览器中完全不同(你没有提到Safari,它也使得它与其他浏览器的呈现方式截然不同)。仅这一点就很难很好地设计它。
但更重要的是,由于存在潜在的安全问题,大多数浏览器会主动阻止大量标准CSS和Javascript操作与file
元素一起使用。
为了避免恶意脚本拦截或更改文件名和路径,会阻止某些Javascript。如果允许这种情况可能发生的影响相当明显。
此外,该元素通常只允许使用CSS进行相当少量的样式。这是因为恶意页面为元素设置样式,使其看起来不像文件元素,从而诱使用户上传他们不应该上传的文件。
This page提供了有关该主题的进一步阅读,并提供了有关成功样式的提示。
希望有所帮助。
答案 1 :(得分:2)
与Chrome和Firefox不同,IE8在点击稍后包含文件名的文本字段时不会打开“选择文件”对话框,因此这个“黑客”将无效。
我认为你无能为力。如果您想为文件上传字段设置自定义样式,请考虑使用基于Flash的解决方案,例如SWFUpload。