다음과 같은 HTML 을 작성하였다.
<DIV style="BORDER-BOTTOM:medium none; FILTER:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/board/IMG/btn_Default.png', sizingMethod='scale'); BORDER-LEFT: medium none; WIDTH: 18px; BACKGROUND-POSITION: 0% 0%; HEIGHT: 18px; BORDER-TOP: medium none; TOP: 0px; CURSOR: default; BORDER-RIGHT: medium none; LEFT: 428px" class=fileitembutton_outer>
<INPUT id="fileinput" style="WIDTH: 18px; HEIGHT: 18px; RIGHT: 0px" class=fileitem_input size=1 type=file>
</DIV>
DXImageTransform.Microsoft.AlphaImageLoader 를 사용하는 이유는 IE8 이하의 IE 브라우저에서 PNG 파일에 대한 투명도를 지정하기 위해서이다. (자세한 내용은 여기 => How to solve/hack fading semi-transparent PNG bug in IE8?)
하지만 filter 를 지정하면서 내부의 file input 을 클릭하지 못하는 버그가 발견되었다. (IE9 에서는 클릭이 된다)
해당 버그로 인해 버튼을 클릭하여 file dialog 를 띄우지 못하게 되었는데 이를 회피하기 위한 코드를 작성하였다.
<html>
<head>
<script type="text/javascript">
function fileClick()
{
var fObj = document.getElementById("fileinput");
fObj.click();
}
</script>
</head>
<body>
<DIV onclick="javascript:fileClick()" style="BORDER-BOTTOM:medium none; FILTER:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/board/IMG/btn_Default.png', sizingMethod='scale'); BORDER-LEFT: medium none; WIDTH: 18px; BACKGROUND-POSITION: 0% 0%; HEIGHT: 18px; BORDER-TOP: medium none; TOP: 0px; CURSOR: default; BORDER-RIGHT: medium none; LEFT: 428px" class=fileitembutton_outer>
<INPUT id="fileinput" style="WIDTH: 18px; HEIGHT: 18px; RIGHT: 0px" class=fileitem_input size=1 type=file>
</DIV>
</body>
</html>
이렇게 하면 투명도도 지정하고 file dialog 도 띄울 수 있다.
단, IE6,7,8 에서만 적용되도록 해야 한다.