2009-08-06 7 views
2

Es gibt dieses IMacro Skript-Tool, wenn Sie einige Web Seitenaufrufe mit Javascript automatisieren möchten.IMacro Scripting - Wie liest man eine lokale. Txt-Datei mit Javascript

Ich mag meinen Javascript habe von einer lokalen TXT-Datei lesen (nicht eine CVS-Datei und nicht gut formatierte .. Ich möchte in es wahrscheinlich mit einem regulären Ausdruck suchen ..) und basierend auf diesem Lesen, wird das Skript etwas Arbeit in IMacros .. (z. B. rufen Sie einige Website URL etc ..)

Haben Sie eine Idee, wie dies getan werden kann? Ich mache alles lokal und das ist mein lokaler Browser Lesen von meiner lokalen Festplatte .. es sollte irgendwie möglich sein .. aber wie?

Antwort

3

Ja, Sie können es mit imacros tun, aber Sie müssen es aus javascript.js Datei aufrufen. Laden Sie Ihren Inhalt als einen Block, dann können Sie Javascript indexOf Methode verwenden, um die Zeichenfolge im Text zu finden und if-Anweisung auszuführen. 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; 
} 
1

Sie müssen XML-HTTP-Anfrage verwenden, da ActiveX-Objekt der Datei von keinem anderen Browser als IE unterstützt wird.

Dieser Code funktioniert einwandfrei beim Lesen lokaler txt oder einer anderen 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) 
} 
1

ich es in der altmodischen Art und Weise gelöst - Zeile für Zeile zu lesen:

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'); 

Hoffen, dass es künftig Lesern helfen wird^_^

1

in Firefox können Sie die Datei direkt lesen .

weitere Informationen bei 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

var 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); 
zu lesen