Yes, I found the best workaround! This is not a hack - we just need two buttons: the original and the "fake".
<input type="button" value="Choose Files">
<input type="file">
The fake is displayed to the user and has
z-index:1
The original is located above it,
z-index:2, opacity: 0; position: relative;
and has callbacks:
:onmousedown=>"buttonPush('depressed')", :onmouseup=>"buttonPush('normal')"
function buttonPush(buttonStatus) {
if (buttonStatus == "depressed")
document.getElementById("fake_btn").style.borderStyle = "inset";
else
document.getElementById("fake_btn").style.borderStyle = "outset";
}
Thanks to this link
http://www.dreamincode.net/forums/topic/15621-styling-a-file-browse-button/
@Piskvor, @racar