Javascript 文件上载单击事件在应用某些css样式后未正确触发(在IE 8上)
我有以下几点 Asp.net标记Javascript 文件上载单击事件在应用某些css样式后未正确触发(在IE 8上),javascript,css,asp.net,.net,Javascript,Css,Asp.net,.net,我有以下几点 Asp.net标记 <div class="formSample"> <div class="uploadTest"> Choose File <asp:FileUpload ID="uploadControl" runat="server" /> </div> </div> .上传测试 { font-family:
<div class="formSample">
<div class="uploadTest">
Choose File
<asp:FileUpload ID="uploadControl" runat="server" />
</div>
</div>
.上传测试
{
font-family: 'open_sansregular', Arial, Helvetica, sans-serif;
float: right;
overflow: hidden;
width: 9em;
text-align: center;
color: white;
font-size: 1em;
background: #22a0db;
cursor: pointer;
padding: 0.4em 0.2em 0.1em 0.3em;
margin: 0em 0em;
border-radius: 1em;
-webkit-border-radius: 1em;
-moz-border-radius: 1em;
-ms-border-radius: 1em;
-o-border-radius: 1em;
}
Javascript
function upLoadOnClick() {
document.getElementById('ctl00_ContentPlaceHolder1_uploadControl').parentNode.click();
}
document.getElementById('ctl00_ContentPlaceHolder1_uploadControl').onClick = upLoadOnClick;
这里的问题是,当我按下右边的控件时,只会出现弹出窗口,但当我按下中间或左边的控件时,浏览窗口不会启动。这个问题只发生在IE8中。
有什么建议吗
首先,出于安全原因,大多数(可能是所有现代)浏览器不允许通过编程方式单击文件
输入,因此您的javascript无法按您希望的方式工作。要使“选择文件”弹出窗口出现,用户必须单击控件本身。在Chrome和Firefox中,您的代码在没有javascript的情况下似乎都能正常工作。这是一本书
众所周知,
文件
输入很难跨浏览器设置样式。我认为最常见的方法是使文件输入不可见,并将其覆盖在其他元素之上,这些元素的样式是您希望它们的外观。这是另一个例子。你好,鲁迪斯特。谢谢你的评论。你试过在IE8上运行上述内容吗?很抱歉没有解释浏览器版本。如果您尝试在IE8上运行它,这个问题将变得非常清楚。
function upLoadOnClick() {
document.getElementById('ctl00_ContentPlaceHolder1_uploadControl').parentNode.click();
}
document.getElementById('ctl00_ContentPlaceHolder1_uploadControl').onClick = upLoadOnClick;