簡體   English   中英

在Firefox中,使用Javascript寫入文件?

[英]In Firefox, Write to a File using Javascript?

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

方法: - 安裝應用程序完成后,應用程序使用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>

還提到了SO中的鏈接: - 如何使用JavaScript讀寫文件

請提供支持使用在Firefox瀏覽器中運行的Javascript編寫文件的解決方案。

提前致謝。

出於明顯的安全原因,你無法做到這一點。 JavaScript無法訪問文件系統...在IE中它不是JavaScript,而是ActiveX這樣做......它只是暴露了一個JavaScript API。

問題不在於Firefox沒有這樣做......這就是IE曾經允許它:)

您需要創建自己的Firefox擴展 ,因為讀/寫本地文件被視為特權操作。

使用XPCOM讀取/寫入文件: https//developer.mozilla.org/en-US/docs/Code_snippets/File_I_O 這不適用於您的網頁,只能來自特權代碼,例如擴展程序。

雖然Firefox不允許你硬編碼到特定的路徑,你可以讓它向用戶提供一個對話框,用戶可以手動將它保存到路徑,雖然他們也需要更改文件類型(所以我知道這個不是很實用): https//stackoverflow.com/a/13696029/271577 同一篇文章還展示了如何在新選項卡中打開文件內容,用戶可以使用瀏覽器的保存功能手動保存文件(這種方法的好處是文件擴展名默認為.txt(和它一樣)在某些情況下可以很好,它可以為用戶提供內容的預覽))。

順便說一句,雖然火狐曾經有過允許HTML獲得與用戶權限權限的土辦法,enablePrivilege現在出了門 ,我上附加稱為工作AsYouWish允許特權(如桌面文件寫入)是在每個站點的基礎上請求用戶,雖然我希望它最終可能進入Firefox(需要白名單),但它目前需要安裝附加組件(它仍然是alpha / beta,有一個最終確定或完成的事情的數量,最重要的是強制要求使用https來避免中間人攻擊。 它目前使用我認為可能在將來與其他瀏覽器一起使用的API,它會告知用戶確切地要求哪些特權,並且它不要求開發人員每次想要他們的時候都要編寫新的插件站點請求來自用戶的特權訪問。

有關在Firefox中執行此操作的信息,請參閱https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

它看起來像這樣:

var file = Components.classes["@mozilla.org/file/local;1"].
       createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("/home");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM