I have an HTML file that is using Javascript to do file I/O operations on a .txt file, via an ActiveXObject ( only works in Internet Explorer, on Windows OS).
There is a text input box on the HTML page, and a button. The button calls a function onclick
to write the text entered to the end of the .txt file. There is also a textarea on the HTML page, in which the modified contents of the .txt file are copied and pasted into. All of this is working so far...
var newText = oldText + "\\n" + document.getElementById("userInput").value;
Of course, the escape character \\n
works on the HTML page, and not in the .txt file...
escape()
method on ANSI
values found here , and on ASCII
values found here , but with no luck.
<!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: <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>
Windows expects "\\r\\n"
as linebreaks. I'm quite sure you would find them in your textarea's value
as well (after hitting enter). They will get automatically inserted when you set a value with "\\n"
, and most libraries (like jQuery) do replace them with "normal" linebreaks when reading the value.
However, I would expect a file read/write with only "\\n"
to work, and when you load the file's text into your textarea they should show up. MS Notepad might have problems showing them.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.