firefox下文件域的click事件不弹出文件对话框

<script language="javascript">
function myclick(o){
if(typeof(o)=='string'){
var o = document.getElementById(o);
}else{
if(typeof(o)!='object') return;
}
if(document.all){
o.click();
}else{
var e = document.createEvent('MouseEvent');
e.initEvent('click',true,true);
o.dispatchEvent(e);
}
}
</script>
<input type="button" value="浏览" onclick="javascript:myclick('a')" />
<input type="file" id="a" style="display:none" onclick="javascript:alert('clicked');" />

在FF下面可以弹出"clicked",但是不会出现文件对话框。
该怎么办?

这个机制有问题,毕竟在FF下那个click事件是模拟的,file的值通过模拟click事件获取的文件不能提交,也不能传给其他函数,因此就算你通过某种强力手法输入了file的指,也不见得能顺利提交

如果你实在想点击那个file,试试引入一下jquery,它已经帮你做了很多事情,你可以直接用.click()的方式来触发事件,兼容性jquery已经帮你做得很好了,不过我没有去尝试,即便是click成功也不保证可以正确提交表单

你可以尝试一下另外的思路,网上流传一种方法是模拟定位,然后让file透明来自定义file表单域的

<script>
function fclick(obj){
with(obj){
style.posTop=event.srcElement.offsetTop //设置透明上传框的Y坐标跟模拟按钮的Y坐标对齐
style.posLeft=event.x-offsetWidth/2 //设置透明上传框的X坐标为鼠标在X轴上的坐标加上它的宽的一半(确保点击时能点中透明上传框的按钮控件),这里只是提供一种思路,其实还可以更精确的控制它的X坐标范围
}
}
</script>

或者精确X:
<script>
function fclick(obj){
with(obj){
style.posTop=event.srcElement.offsetTop //设置透明上传框的Y坐标跟模拟按钮的Y坐标对齐
var x=event.x-offsetWidth/2
if(x<event.srcElement.offsetLeft)x=event.srcElement.offsetLeft
if(x>event.srcElement.offsetLeft+event.srcElement.offsetWidth-offsetWidth)x=event.srcElement.offsetLeft+event.srcElement.offsetWidth-offsetWidth
style.posLeft=x }
}
</script>

file也要做隐藏处理
<input type="file" name="picpath" id="picpath" style="position:absolute;filter:alpha(opacity=0);width:30px;" onChange="document.formen.path.value=this.value" hidefocus=“hidefocus”>

大概原理就这样,调试兼容性是很麻烦的事情,不好意思我暂时没时间一步一步去验证,你按照这个思路再试试
温馨提示:内容为网友见解,仅供参考
无其他回答

firefox下文件域的click事件不弹出文件对话框
这个机制有问题,毕竟在FF下那个click事件是模拟的,file的值通过模拟click事件获取的文件不能提交,也不能传给其他函数,因此就算你通过某种强力手法输入了file的指,也不见得能顺利提交 如果你实在想点击那个file,试试引入一下jquery,它已经帮你做了很多事情,你可以直接用.click()的方式来触发事件,...

firefox的ieTAB插件只能打开QQ空间的首页打不开留言板和日志等_百度知...
方案一:清除IE缓存1. 打开IE浏览器→点击【工具】→ 【Internet 选项】→【删除】:2. 勾选所有选项→点击【确定】→ 在确认窗口中点击【确定】:方案二:注册IE组件1 点击【开始】菜单→在搜索框中输入"cmd"→按键盘enter(回车)键:2 在弹出的黑色窗口中,按顺序输入以下内容,按键盘enter(回车)...

火狐的Clipmarks插件有何用?怎么使用?
PDF Download - 提供浏览者对PDF更多的操控方式,当你点击一个PDF链接时Firefox会弹出一个对话框供你进行选择性操作:下载、在标签页打开、在新标签页中以HTML方式查看、取消。 ScrapBook - 方便的保存与管理网页。 DownThemAll - 只需一点即可下载网页中的所有连接。 TargetAlert TargetAlert - 可以帮你扫描网页中的...

火狐常用插件有哪些
TabClickingoptions:可以设定在Tab标签条上的鼠标点击事件,单击双击,左键右键中键都可以自由设定。TabExtensions:不多说了,方便的Tab浏览插件。Tabprefs:另一个Tab浏览插件的选择。tabX:可以在Tab标签条上加一个关闭按钮。titletweak:可以自由设定Firefox的标题。tongwen:可以指定中文页面在简体和繁体...

我用火狐,不知最近发现打不开,点击火狐就出现FireFoX已停止工作_百度知 ...
不知道你最近有没有给火狐安装过插件,可能是插件问题引起的火狐崩溃,你在开始,运行里面输入“firefox -safe-mode”进入火狐的安全模式看一下,把最近安装过的插件删除重启一下火狐,看看能不能正常运行,如果还是不行。彻底卸载火狐之后重新安装一下。

献给网页开发者的20款Firefox插件分享
这款插件会帮你控制Java和Javascript以及其他可执行的内容在你所信任和允许的域当中运行,比如特定的银行站点。它可以帮你抵抗跨站脚本攻击(XSS),跨域DNS绑定和CSRF攻击(攻击路由器),反劫持,并且内置独特的ClearClick技术。11. DOM Inspector DOM查看器是一个用来检查和编辑网页或者XUL应用程序的DOM...

Firefox 尝试联系您指定的代理服务器时连接被拒绝如何解决。_百度知 ...
这时你想运行其他程序,简直就是受罪,速度出奇的慢。这就要查看是哪个进程占用了系统资源。找到后,将其名称记下来,然后点击结束。如果不能结束,则要重新启动机器,进入安全模式下,将相关文件删除。还要进入注册表,在注册表对话框里点“编辑→查找”,输入那个程序名,找到后将其删除,最好反复搜索几...

HTTP调试工具 fiddler图文使用教程详细介绍
你可以通过检查代理设置对话框来验证Fiddler是被正确地截取了web请求。操作是这样的:点击IE设置,工具,局域网设置,最后点击高级。 作为系统代理,所有的来自微软互联网服务(WinInet)的http请求再到达目标Web服务器的之前都会经过Fiddle,同样的,所有的Http响应都会在返回客户端之前流经Fiddler。这样,就能明白Fiddler很多作用了...

浏览器如何充当P2P软件
首先我们通过浏览器登录Reep.io网站,这个网站不需要用户进行任何的注册就可以操作。现在点击网页中的Add or drop flies按钮,在弹出的对话框中选择需要进行发送的文件即可(图1)。当然还有一个更简单的方法,就是选中文件以后拖拽到网页中释放。稍等片刻,网页中即会出现一个文件的分享链接(图2)。1 2 ...

我的是win10系统 玩游戏时按键输入法就弹出来了 如何设置玩游戏不弹出输...
1、首先需要打开电脑的“控制面板”,单击电脑下方的“搜索”2、输入“控制面板”,单击 3、进入对话框后,选择“时钟、语言和区域”选项 4、选择“添加语言”5、可以看到“下移”选项,但是是灰色的,因为现在只有一种语言。所以我们选择“添加语言”6、在弹出界面中选择“英语”,选择“添加”7、这...

相似回答
大家正在搜