input=file 拒绝访问 无法自动触发事件

本文探讨了input=file控件因安全限制导致无法通过JS触发选择文件的问题,并提供了一种解决方案,即通过JavaScript控制透明input=file的位置,使其覆盖在提交按钮上,以此实现主动触发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我知道这样的拒绝访问是input=file的一个老毛病

解决思路是这样子的:
1、首先把input=file做成透明来隐藏
2、要明确一点:用其它按钮的click时间来触发input=file时间是不可能的,一定会拒绝访问
3、input=file必须被主动触发,而不是由Js函数来被动click
4、唯一的办法:点击你的submit按钮,而实际上点的是input=file的按钮
5、所以要用Js控制透明之后的input=file绝对位置
6、曾经的一个做法是,当鼠标进入submit按钮区域,就把input=file动态的移动到submit的位置,相当于有个透明层位于submit上方
7、此时点击submit首先影响的是把它给挡住的input=file,然后再发生自己的点击事件,这样就属于主动点击input=file的按钮
8、需要注意的是隐藏和坐标计算,包括焦点处理都得要妥善完成,你可以先用半透明调整好位置         
因为微软出于安全方面的考虑,只有当鼠标真正单击在上传控件的按钮上浏览到的文件才可以上传(否则,只要你进入我的页面,我就可以随心所欲的得到你的私密文件)。         
解决方法:
https://github.com/yize/input
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值