2013-03-02 130 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

相關問題