使用Javascript进行文件上传会将带有样式化的“拒绝访问”错误返回到按钮
我使用以下程序化了My File输入:
#yourBtn{ position: relative; top: 150px; font-family: calibri; width: 150px; padding: 10px; border-radius: 5px; border: 1px dashed #ddeeff; text-align: center; background-color: #ffddee; cursor:pointer; color:#333333; } function getFile(){ document.getElementById("upfile").click(); } function sub(obj){ document.getElementById("yourBtn").innerHTML = "Uploading Please Wait..."; document.myForm.submit(); event.preventDefault(); }
问题是.submit()函数返回IE上的“拒绝访问”错误(在IE8和9中测试)。 适用于所有其他浏览器(chrome,opera,safari和Firefox)。 当调用sub(obj)时。 即使我也使用Jquery,也会发生同样的事情。
那么任何人都可以告诉我如何让这个脚本在IE上运行?
如上所述,IE不允许您打开对话框并代表用户通过javascript提交文件。 话虽这么说,你设计“文件输入”的想法是完全有效的。
此链接可以帮助您:
样式文件输入
至少可以说这是一个错误的工作,但一般的要点是:
- 创建文件输入并使用css将不透明度设置为0.0。 不设置可见性,因为这将禁用输入。
- 使用CSS为您喜欢的常规文本输入设置样式,使其看起来像您想要的文件输入。
- 定位文本输入并添加z-index为0。
- 定位文件输入(完全透明)并将z-index设为1。
-
编写javascript来拉取文件输入的值(即在jQuery中
$('input[type="file"]').val();
并将其放在文本输入中。
这里的想法是文件输入仍在拉动文件,用户仍在选择文件。 从某种意义上说,你掩盖它并使它看起来好像你有一个自定义控件。 真的,你的虚假控制背后是真正的控制,它只是透明的。
希望这可以帮助
这永远不会奏效。 IE不允许您通过javascript调用“选择文件”对话框并通过javascript提交相关表单。 如果您尝试这样做,正如您所见,IE将在表单提交时抛出错误。 您必须允许用户自己单击输入元素。