IE Makro Scripting - Wie eine lokale .text Datei mit Hilfe von Javascript lesen
-
11-09-2019 - |
Frage
Es gibt dieses IMACRO Scripting-Tool, wenn Sie wollen automatisieren einige Web Seite Besuche von Javascript.
Ich mag meinen Javascript habe von einer lokalen TXT-Datei zu lesen (Kein CVS-Datei und nicht gut formatiert .. würde Ich mag wohl darin suchen, mit einem regulären Ausdruck ..) und auf der Grundlage dieser Lesung wird das Skript einige Job in imacros tun .. (z eine Website aufrufen url etc ..)
Haben Sie Jungs eine Ahnung, wie dies getan werden kann? Ich tue alles lokale und das ist mein lokaler Browser von meiner lokalen Festplatte zu lesen .. es sollte irgendwie möglich sein .. aber wie?
Lösung
Ja, Sie können es mit imacros tun, aber Sie müssen es aus javascript.js Datei aufrufen. Laden Sie Ihre Inhalte als einen Block, dann können Sie Javascript indexOf Methode verwenden, um die Zeichenfolge im Text und führen if-Anweisung zu finden. Textbeispiel (in Ihrer txt-Datei): "Hallo Welt!"
var load;
load = "CODE:";
load += "set !extract null" + "\n";
load += "SET !DATASOURCE text.txt" + "\n";
load += "SET !DATASOURCE_COLUMNS 1" + "\n";
load += "SET !DATASOURCE_LINE 1" + "\n";
load += "SET !extract {{!col1}}" + "\n";
iimPlay(load);
var s=iimGetLastExtract(0);
var index=s.indexOf("w");
if (index>0){
do your code;
}
Andere Tipps
Sie müssen xml HTTP-Anforderung als ActiveX-Objekt der Datei verwenden, wird von keinem anderen Browser als IE unterstützt wird.
Dieser Code funktioniert völlig in Ordnung, während die lokalen txt lesen oder andere zu Datei.
f();
function f()
{
var allText =[];
var allTextLines = [];
var Lines = [];
var txtFile = new XMLHttpRequest();
txtFile.open("GET", "file://D:/test.csv", true);
allText = txtFile.responseText;
//allTextLines = allText.split(/\r\n|\n/);//splits ur file line by line.
//alert(allTextLines);
txtFile.onreadystatechange = function()
{
if (txtFile.readyState == 4)
{
// Makes sure it's found the file.
allText = txtFile.responseText;
allTextLines = allText.split(/\r\n|\n/);
alert(allText);
} else { //alert("Didn't work");
}
}
txtFile.send(null)
}
ich es in der altmodischen Art und Weise gelöst - Lese Zeile für Zeile:
function read_file(path) {
var content = '', l = 1, f, res = '';
do {
content += res && (res + "\n");
f = "CODE: "+"\n";
f += "SET !EXTRACT null" + "\n";
f += "SET !DATASOURCE \""+path+"\" "+"\n";
f += "SET !DATASOURCE_COLUMNS 1" + "\n";
f += "SET !DATASOURCE_LINE " + l + "\n";
f += "SET !EXTRACT {{!col1}}" + "\n";
iimPlay(f);
res = iimGetLastExtract();
l++;
} while (res && res != '#EANF#');
return content;
}
var file_conten = read_file('/home/user/iMacros/templates/some_file.txt');
Hoffnung werde es künftig Leser ^ _ ^
Hilfein Firefox können Sie die Datei direkt lesen.
Weitere Informationen unter https: //developer.mozilla. org / en-US / Add-ons / Code_snippets / File_I_O # Line_by_line
Datei Zeile für Zeile verwenden Sie die folgende
lesenvar FileUtils = Components.utils.import("resource://gre/modules/FileUtils.jsm").FileUtils;
FileLocation = "C:\\myFile.txt"
var file = new FileUtils.File( FileLocation );
// open an input stream from file
var istream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
istream.init(file, 0x01, 0444, 0);
istream.QueryInterface(Components.interfaces.nsILineInputStream);
// read lines into array
var line = {}, lines = [], hasmore;
do {
hasmore = istream.readLine(line);
lines.push(line.value);
} while(hasmore);
istream.close();
// do something with read data
alert(lines);