日期:2014-05-16  浏览次数:20399 次

能否用js模拟用户点击了上传文件的“浏览”按钮?.click()好像只能在IE中执行。
能否用js模拟用户点击了上传文件的“浏览”按钮?.click()好像只能在IE中执行,正确应该是什么事件。

------解决方案--------------------
HTML标准里面不包含这个功能,也不知道有什么浏览器支持这个功能。
------解决方案--------------------
我记得书里面讲,gmail是采用了一个"隐型的"文件上传控件(input控件)悬浮在伪装的按钮上面,用户点击其实是点击了那个隐型的按钮~~~从而达到那种效果~~
------解决方案--------------------
IE下可以用obj.click(),但firefox要添加一个MouseEvents。

var a=document.createEvent("MouseEvents");
a.initEvent("click", true, true);
obj.dispatchEvent(a);
------解决方案--------------------
3楼的学习了.....
------解决方案--------------------
4楼的大哥,你才值得我学习。你的知识面比我广得多。。。
------解决方案--------------------
- -!代码都给出了,还实例。。。。汗。。。。

<div id="a1" onclick="alert('我是一个div,你点了我的onclick事件了')">

<script>
var ie=navigator.appName=="Microsoft Internet Explorer" ? true : false;
if(ie){document.getElementById('a1').click()}//IE的处理
else{var a=document.createEvent("MouseEvents");//FF的处理
a.initEvent("click", true, true); 
document.getElementById('a1').dispatchEvent(a);
}
</script>
------解决方案--------------------
说实在这东西我还真不会.记下了.谢谢!
------解决方案--------------------
文件上传控件,即使用js调用了click方法选择了上传文件~但是提交以后文件是不会上传的!
所以别那么做~~~

可以仿效gmail那个做法~~
------解决方案--------------------
测试过,证实file域在FF下不行。没办法,你只能用美工去做一个上传按钮的层,然后定义绝对位置,把file域透明度设为0,这种方法来实现,FF下是用click或者dispatchEvent也不行。
------解决方案--------------------
你是要干嘛?选择文件后直接上传?不用在按"确定",或者"上传"?

如果是的话<file>的onchange()里把表单submit()就可以了
------解决方案--------------------
没用的,用脚本[.click()]触发的点击,上传不了的。


------解决方案--------------------
听说过用obj.click()脚本去触发只能显示而实际不能上传,我没试过,但我用WScript.Shell的sendkeys去写入那个值却能上传。我觉得楼主的意图只是模拟click(),用透明层和绝对位置就能实现了,你的意图又不是全自动选好并添加到file域,为什么非要用那个JS去实现。
------解决方案--------------------
HTML code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>仿126网络硬盘上传 by littlelam</title>
</head>
<script>
var TotalFiles = 0;
function AddFiles()
{
    TotalFiles ++;
    var file=document.createElement("input"); 
    file.type = "file";
    file.id = "f"+ TotalFiles.toString();
    file.name = "files"+ TotalFiles.toString(); 
    file.hideFocus = true;
    file.style.cssText = "cursor:pointer; width:1px; border:none; height:32px; padding:0px; margin:0px;position:absolute; opacity:0;filter:alpha(opacity=0);font-size:20px;";
    file.onchange = function ()
    {
        $("s"+TotalFiles.toString()).innerHTML = $("f"+TotalFiles.toString()).value.substring($("f"+TotalFiles.toString()).value.lastIndexOf("\\")+1,$("f"+TotalFiles.toString()).value.length) + "    <span onclick=\"DelFile('"+TotalFiles.toString()+"')\" style=\"cursor:pointer;color:red\">X</span>";
        this.style.display = "none";
        AddFiles();
    };
    $("UpFilePanelHidden").appendChild(file);
    var div=document.createElement("div"); 
    div.id = "s"+ TotalFiles.toString();
    $("UpFilePanelShow"