3

ゲーム用のマップ エディターを作成しました。コードは、id "code" の div に生成されます。このコードで JavaScript ファイルを生成する方法を知りたいです。明らかに、コード div のテキストを取得する必要があります。var code = $("#code").text();動作します。しかし今、私はこのコードでjavascriptファイルを生成してダウンロードしたいと思っています。javascriptのみでファイルを生成/ダウンロードすることは可能ですか、それともphpを使用する必要がありますか?

フォルダと名前を手動で選択したい。

4

3 に答える 3

0

JavaScript には、ファイルの保存を促す機能がありません。あなたの最善の策は、それを新しいウィンドウにダンプし、ユーザーが選択した場合に保存できる場所に表示することです(ファイル->保存)。それ以外の場合は、必要な情報を PHP 呼び出しに渡す方法を見つける必要があります。そうすれば、PHP がそれを提供しContent-Disposition: attachment、クライアントにファイルをダウンロードするように求めることができます。

また、machineghost が私を打ち負かしたように、Flash のようなプラグインを使用してクライアント側に保持することもできますが、それでもプレーンな JavaScript ではありません。しかし、Downloadifyにはその機能があります。

于 2012-12-28T00:11:19.890 に答える
0

あなたの質問に対する短い答えはノーです。セキュリティ上の理由から、ブラウザは Javascript がファイルシステムでほとんど何もできないように細心の注意を払っています。

ただし、Flash にはそのような制限はありません。チェックアウト: https://github.com/dcneiner/Downloadify . もちろん、モバイル ブラウザが Flash をサポートしない傾向があるなど、Flash には独自の問題があります (ただし、ユース ケースはファイルのダウンロードであり、モバイル ユーザーはおそらくそれを行わないため、Flash では問題にならない可能性があります)。あなた)。

Downloadify(または同様のFlashベースのソリューション)以外の唯一のオプションは、Javaアプレット(その道をたどりたくない)、ブラウザプラグイン、またはある種のサーバー関与(例:@Brad Christieなど)です説明された)。

于 2012-12-28T00:11:31.873 に答える
0

ファイル名とファイル拡張子の提案を制御することはできませんが、ちょっとしたことはできます。

私はこれを実動 Web サイトには使用しませんが、うまくいくようです。

function promptSave(data) {
    /*@cc_on @*/
    /*@if (@_jscript_version >= 4)
        //ie code here
        var iframe = document.createElement("iframe");
        document.body.appendChild(iframe);
        var doc = iframe.contentWindow.document;
        doc.write(data);
        doc.execCommand('SaveAs', '', 'somefilename.txt');//only certain file extensions allowed
        document.body.removeChild(iframe);
        @else @*/
        // non ie code
        window.location = 'data:application/octet-stream;base64,' + window.btoa(data);
    /*@end @*/
}
var data = 'var jsFoo = {k:55};';
promptSave(data);

デモ

.partただし、Firefoxはファイルとして保存することに固執しています。

于 2012-12-28T01:54:59.737 に答える