2010-11-26 57 views
6

情況: - 我創建了一個安裝設置(本地),它返回一個URL,例如: - ved.test.com,映射到IP 11.22.33.44。 因此,爲了使Web應用程序在安裝後可訪問,用戶必須明確地在「C:\ WINNT \ system32 \ drivers \ etc」目錄下的hosts文件中輸入條目。在Firefox中,使用Javascript寫入文件?

方法: - 安裝應用程序完成後,應用程序使用Javascript寫入文件。

問題: - 在IE中支持使用Javascript編寫文件。我需要一個針對Firefox的解決方案。 代碼用於: -

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Write To A File</title> 
<script language="javascript"> 
    function WriteToFile() 
    { 
    /* The below statement is supported in IE only */ 
    var fso = new ActiveXObject("Scripting.FileSystemObject"); 
    var s = fso.CreateTextFile("C:\\Test.txt", true); 
    s.WriteLine('IE Supports Me!'); 
    s.Close(); 
    } 
</script> 
</head> 
    <body onLoad="WriteToFile()"> 
</body> 
</html> 

曾經也refered在SO鏈接: - How to read and write into file using JavaScript

請提供一個支持火狐瀏覽器編寫使用運行的JavaScript文件的解決方案。

在此先感謝。

+1

您的SO-link回答了問題。這在瀏覽器中是不可能的。 – jwueller 2010-11-26 10:10:39

+2

你剛剛覆蓋我的C:\ Test.txt!嚴重的是,不允許網頁寫入用戶的文件系統。並且搞亂「%SystemRoot%\ system32 \ drivers \ etc \ hosts」顯然是惡意行爲。 – 2010-11-26 10:33:45

+0

@ user205376 - 是的,我知道主機文件操作,協助我的應用程序用戶更好的體驗。因此遇到這種情況。 – vedvrat13 2010-11-26 10:43:05

回答

14

你不能這樣做,因爲有希望的明顯的安全原因。 JavaScript無法訪問文件系統...在IE中,它不是JavaScript,但是ActiveX這樣做......它只是暴露了JavaScript API。

問題不是Firefox不這樣做......它是IE瀏覽器都不放過吧:)

1

而Firefox不會讓你硬編碼到一個特定的路徑,你可以得到它顯示一個對話框向用戶誰可以將其保存到路徑手動,但他們也需要更改文件類型(所以我知道這不是很實際):https://stackoverflow.com/a/13696029/271577。同一篇文章還展示瞭如何在新標籤中打開文件內容,用戶可以使用瀏覽器的保存功能手動保存文件(這種方法的好處是文件擴展名默認爲.txt)在某些情況下可以很好,因爲它可以讓用戶預覽內容))。順便說一句,儘管Firefox用來允許HTML獲得用戶權限的本地方式,enablePrivilege現在是out the door,我正在致力於一個名爲AsYouWish的附加組件,它允許特權訪問(如桌面文件寫入)以每個站點爲基礎向用戶請求,雖然我希望它最終可以進入Firefox(需要白名單),但它目前需要安裝附加組件(它仍然處於alpha/beta版本,有許多事情要完成或制定出來,最重要的是強制要求使用https來避免中間人攻擊)。它目前使用一個API,我認爲它可能在將來可能與其他瀏覽器一起使用,它會通知用戶確切地要求什麼特權,並且它不要求開發人員在他們每次想要獲得它們時都要編寫一個新的附加組件站點請求來自用戶的特權訪問。