2013-03-02 141 views
1

我尝试以编程的方式模拟用户点击一个html元素类型输入:文件上传文件到JavaScript的Firefox浏览器上的网站。 在我的JavaScript文件下面的JavaScript代码模拟并打开文件对话框:如何用JavaScript模拟文件选择?

var target_element; 
var dispatchMouseEvent = function(target, var_args) { 
    var e = document.createEvent("MouseEvents"); 
    e.initEvent.apply(e, Array.prototype.slice.call(arguments, 1)); 
    target.dispatchEvent(e); 
}; 

target_element = window.content.document.getElementById("DivElement"); 
dispatchMouseEvent(target_element, 'mouseover', true, true); 
dispatchMouseEvent(target_element, 'mousedown', true, true); 
dispatchMouseEvent(target_element, 'mouseup', true, true); 
dispatchMouseEvent(target_element, 'click', true, true); 

,但我无法找到一个方法来编程模拟像一个用户的文件对话框的文件的选择中选择一个文件,点击文件对话框的打开按钮。这有可能做到这一点与JavaScript?

+1

这里是javascript文件中的javascript代码: – 2013-03-02 12:38:48

+0

如果你正在寻找自动化测试,看看这个问题,这些工具可能能够模拟这个; http://stackoverflow.com/questions/4043706/automated-testing-of-css-and-html-front-end-coding – thaJeztah 2013-03-02 12:43:58

回答

3

这将是不可能的,并有很好的理由。如果您可以在客户端自动选择文件,那么您将为大规模违反安全和隐私打开大门。

+0

感谢您的回答。那么是否可以使用javascript提交/上传文件而无需打开文件对话框?我可以看到一些像iMacros这样的应用程序,它可以模拟上传到网站的文件没有任何问题。所以我想应该可以在JavaScript中做到这一点? – 2013-03-02 12:51:18

+1

只是想象一些随机编码器可以从你的电脑获取任何文件并上传它,而你没有注意到它,所以出于安全原因,你不能上传的东西没有用户这样做 – 2013-03-02 15:00:17

+0

我认为这是一个误解。我正在谈论运行在用户上下文方又称为客户端浏览器的JavaScript,而不是从服务器端运行JavaScript。在这种情况下你如何安全问题? Mozilla Firefox拥有大量的图书馆来访问文件系统,我开发了大量的脚本,完全没有安全问题。任何由用户完成的事情都可以通过编程来完成,在我的情况下,这个问题是关于一个文件对话框的打开,所以我找不到用JavaScript引用这个文件对话框的方法。 – 2013-03-02 17:09:06