2010-11-26 4 views
6

状況: - URLを返すインストール設定(ローカル)を作成しました。例えば、 - IP 11.22.33.44にマップされたved.test.com。 インストール後にWebアプリケーションにアクセスできるようにするには、hostsファイルの "C:\ WINNT \ system32 \ drivers \ etc"ディレクトリに明示的にエントリを作成する必要があります。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> 

もSOのリンクを参照さがあります: - How to read and write into file using JavaScript

は親切のFirefoxブラウザで実行Javascriptを使用してファイルの書き込みサポートするソリューションを提供します。

ありがとうございました。

+1

あなたのSOリンクが質問に答えます。これはブラウザでは不可能です。 – jwueller

+2

あなたは私のC:\ Test.txtを上書きしました!真剣に、いいえWebページは、ユーザーのファイルシステムに書き込むことができます。そして、 "%SystemRoot%\ system32 \ drivers \ etc \ hosts"を混乱させることは、明らかに悪意のある動作です。 –

+0

@ user205376 - はい、私はホストファイルの操作を認識しています、より良い経験のために私のアプリのユーザーを支援していました。こうしてこのような状況に遭遇しました。 – vedvrat13

答えて

14

セキュリティ上の理由から、これはできません。 JavaScriptはファイルシステムへのアクセス権がありません... IEではJavaScriptではありませんが、ActiveXではこれが行われています... JavaScript APIが公開されています。

問題は、IEが今までそれを許されていること:)

+3

私はIEをさらに憎むことができることに驚いています_more_。 – jwueller

+0

統計情報のデータは、mozilla.comのほとんどのユーザーがIEを使用していると言っているので、IEが良いです。 – khachik

+0

@Nickあなたの返事をありがとう。 FFで実現できない場合は、別のアプローチを提案してください。 – vedvrat13

3

ローカルファイルの読み込み/書き込みする特権操作と考えられているので、あなたは、create your own Firefox extensionにする必要がありますです... Firefoxはこれをしないということではありません。

XPCOMを使用してファイルを読み書きする:https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_OこれはあなたのWebページからは機能しませんが、拡張機能などの特権コードからのみ機能します。

+0

返信いただきありがとうございます。拡張機能を実行するには、ユーザーはまた、これらの拡張機能をインストールする必要がありますか? – vedvrat13

+0

@UIDreamer:はい。ユーザーは、ウィンドウの上部にある黄色のバーをクリックし、警告ダイアログのインストールボタンをクリックしてFirefoxを再起動する必要があります。 – PleaseStand

1

Firefoxでこれを行う方法については、https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_Oを参照してください。

それはこのようなものになります:Firefoxは、特定のパスにあなたのハードコードをさせませんが、あなたはそれがパスに保存することができ、ユーザーにダイアログを提示するために取得することができます

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

を手動でも、ファイルタイプを変更する必要があります(これはあまり実用的ではありません)。https://stackoverflow.com/a/13696029/271577。同じ記事では、ファイルの内容を新しいタブで開く方法を示します。このタブでは、ブラウザの保存機能を使用して手動でファイルを保存できます(このアプローチの利点は、ファイル拡張子がデフォルトで.txtユーザーにコンテンツのプレビューを与えるという点でいくつかの状況ではうまくいくことがあります)。

ちなみに、FirefoxはHTMLは、ユーザー権限で権限を取得することを可能にするための持っていたネイティブな方法は、enablePrivilegeは今out the doorですが、私はアドオンAsYouWishと呼ばれる(例えばデスクトップのファイル書き込みなど)特権アクセスを可能に取り組んでいますサイトごとにユーザーにリクエストする必要があります。また、最終的にはFirefoxにホワイトリストが必要になることもありますが、現在はアドオンのインストールが必要です(まだアルファベット、最終決定や解決にはいくつかのことがあります。最も重要なことは、中間者攻撃を避けるためにhttpsを使用するという要件を強制することです)。現在、他のブラウザで将来的に使用できると思われるAPIを使用しているため、特権が要求されていることをユーザーに正確に伝え、開発者はいつでも新しいアドオンを作成する必要はありません。ユーザからのサイト要求特権アクセス。

関連する問題