0



Javascript を使用して ActiveXObject を介して .txt ファイルでファイル I/O 操作を行う HTML ファイルがあります ( Windows OS の Internet Explorer で のみ動作します)。

HTML ページにはテキスト入力ボックスとボタンがあります。このボタンは、  onclick  入力されたテキストを .txt ファイルの末尾に書き込む関数を呼び出します。HTML ページには、.txt ファイルの変更された内容がコピーされて貼り付けられるテキスト領域もあります。これはすべてこれまでのところ機能しています...


そのため、Javascript を使用した HTML ページから .txt ファイルにタブと改行を挿入したいと考えています。この行を使用して、変数で初期化された .txt ファイルの内容をテキストエリアにコピーしています。

var newText = oldText + "\n" + document.getElementById("userInput").value;

もちろん、エスケープ文字  \n  は HTML ページでは機能しますが、.txt ファイルでは機能しません...


では、新しい行とタブを .txt ファイルの解析可能な形式にエンコードするにはどうすればよいでしょうか? ここで見つかった  値とここで  見つかった  値でescape()  メソッドを  使用しようとし  ましたが、うまくいきませんでした。 これまでの私のコードは次のとおりです。 ANSIASCII


<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>New Web Project</title>
    </head>
    <body>

        <p>
            Enter some text here: &nbsp;
            <input type = "text" id = "userInput" />
        </p>

        <input type = "button" value = "submit" onclick = "main();" />
        <br />
        <hr />
        <br /><br /><br />
        <textarea id = "textHere" rows = 25 cols = 150></textarea>

        <script type = "text/javascript">

            // executes all code from this function to prevent global variables
            function main()
            {
                var filePath = getThisFilePath();

                var fileText = readFile(filePath);
                writeFile(filePath, fileText);

            } // end of function main

            function getThisFilePath()
            {
                var path = document.location.pathname;

                // getting rid of the first forward-slash, and ending at the last forward-slash to get rid of file-name
                var correctPath = path.substr(1, path.lastIndexOf("/") );

                var fixedPath = correctPath.replace(/%20/gi, " "); // replacing all space entities

                return fixedPath;
            } // end of function getThisFilePath

            function readFile(folder)
            {
                var fso = "";
                var ots = "";
                var oldText = "";

                try
                {
                    fso = new ActiveXObject("Scripting.FileSystemObject");

                    // in the same folder as this HTML file, in "read" mode (1)
                    ots = fso.OpenTextFile(folder + "writeToText.txt", 1, true);

                    oldText = ots.ReadAll();

                    ots = null;
                    fso = null;
                }
                catch(e)
                {
                    alert("There is an error in this code!\n\tError:  " + e.message);
                    exit(); // end the program if there is an error
                }

                return oldText;

            } // end of function readFile

            function writeFile(folder, oldText)
            {
                var fso = "";
                var ots = "";

                var newText = oldText + "\n" + document.getElementById("userInput").value;

                try
                {
                    fso = new ActiveXObject("Scripting.FileSystemObject");

                    // in the same folder as this HTML file, in "write" mode (2)
                    ots = fso.OpenTextFile(folder + "writeToText.txt", 2, true);

                    ots.Write(newText);
                    ots.Close();

                    ots = null;
                    fso = null;
                }
                catch(e)
                {
                    alert("There is an error in this code!\n\tError:  " + e.message);
                    exit(); // end the program if there is an error
                }

                setText(newText); // with the function below

            } // end of function writeFile

                // called from the function writeFile
                function setText(textFile)
                {
                    document.getElementById("textHere").value = textFile;

                } // end of function setText

        </script> <!-- end of javascript -->
    </body>
</html>
4

1 に答える 1

2

Windows は"\r\n"改行として期待します。テキストエリアにもそれらが見つかると確信していますvalue(Enterキーを押した後)。で値を設定すると自動的に挿入され、"\n"ほとんどのライブラリ (jQuery など) は、値を読み取るときに「通常の」改行に置き換えます。

ただし、ファイルの読み取り/書き込みのみが機能することを期待しており"\n"、ファイルのテキストをテキストエリアにロードすると、それらが表示されるはずです。MS メモ帳では、それらの表示に問題がある可能性があります。

于 2012-07-27T19:53:42.323 に答える