2012-06-19 23 views
11

ローカルでテキストファイルを作成したい場合は、Googleクロムでボタンをクリックするとエラーが表示されますActiveXObjectが定義されていません Safariボタンをクリックすると、のようなエラーが表示されます。変数:ActiveXObject。いずれかme.howは、私が達成しActiveXObjectが定義されていないため、変数を見つけることができません:ActiveXObject

<script> 
     function createFile() {  
     var object = new ActiveXObject("Scripting.FileSystemObject");  
     var file = object.CreateTextFile("C:\\Hello.txt", true); 
     file.WriteLine('Hello World'); 
     alert('Filecreated'); 
     file.WriteLine('Hope is a thing with feathers, that perches on the soul.'); 
     file.Close(); 
     } 
    </script> 
<input type="Button" value="Create File" onClick='createFile()'> 
+2

IE上でさえ、HTTP経由で提供されるページからこれを行うと、セキュリティブロックを打つことになります。 –

答えて

15

ActiveXObjectだけIEブラウザ上で利用可能である.Thanqファイルを作成することができますすることができます。だから、他のすべてのユーザーエージェントは、あなたの代わりにFile APIまたはFile writer APIを使用することができます近代的なブラウザではエラー

がスローされます(現在はonly on Chromeを実装)

+0

ファイルAPIは読み取り専用なので、読み込めません。 – Quentin

+0

そうですね、私は自分の答えを改善しました、ありがとう。 – fcalderan

+0

ご返信ありがとうございます。 –

8

ActiveXObject非標準およびWindowsだけ上のInternet Explorerでサポートされています。

プラグインを使用せずにファイルシステムに書き込むネイティブのクロスブラウザの方法はありません。ドラフトFile APIでも読み取り専用アクセスが許可されています。

クロスプラットフォームで作業する場合は、署名されたJavaアプレットなどを参照する必要があります(Javaランタイムが利用可能なプラットフォームでのみ機能することに注意してください)。

2

Webアプリケーションは、window.requestFileSystem()を呼び出すことによって、サンドボックスファイルシステムへのアクセスをリクエストできます。 Chromeで動作します。

window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; 
var fs = null; 

window.requestFileSystem(window.TEMPORARY, 1024 * 1024, function (filesystem) { 
    fs = filesystem; 
}, errorHandler); 

fs.root.getFile('Hello.txt', { 
    create: true 
}, null, errorHandler); 

function errorHandler(e) { 
    var msg = ''; 

    switch (e.code) { 
    case FileError.QUOTA_EXCEEDED_ERR: 
     msg = 'QUOTA_EXCEEDED_ERR'; 
     break; 
    case FileError.NOT_FOUND_ERR: 
     msg = 'NOT_FOUND_ERR'; 
     break; 
    case FileError.SECURITY_ERR: 
     msg = 'SECURITY_ERR'; 
     break; 
    case FileError.INVALID_MODIFICATION_ERR: 
     msg = 'INVALID_MODIFICATION_ERR'; 
     break; 
    case FileError.INVALID_STATE_ERR: 
     msg = 'INVALID_STATE_ERR'; 
     break; 
    default: 
     msg = 'Unknown Error'; 
     break; 
    }; 

    console.log('Error: ' + msg); 
} 

詳細情報here

+0

ご返信ありがとうございます。私はあなたのコードを使用しています。クリックしてクリックするだけです。 errorHandlerは定義されていません。何か私は逃した? –

関連する問題