Domanda

C'è questo imacro strumento di scripting, se si desidera automatizzare alcune web pagine viste utilizzando javascript.

Vorrei avere il mio javascript per leggere da un file .txt locale (Non è un file .cvs e non ben formattato .. vorrei cercare in esso probabilmente con un'espressione regolare ..) e sulla base di tale lettura, lo script farà qualche lavoro in iMacros .. (per esempio chiamare qualche sito web url ecc ..)

voi ragazzi avete idea di quanto questo può essere fatto? Sto facendo tutto locale e questo è il mio browser locale lettura dal mio disco rigido locale .. dovrebbe essere in qualche modo possibile .. ma come?

È stato utile?

Soluzione

Sì, è possibile farlo con iMacros, ma è necessario chiamare da file javascript.js. caricare il contenuto come un isolato, quindi è possibile utilizzare il metodo indexOf javascript per trovare la stringa nel testo ed eseguire if. Esempio di testo (all'interno del vostro file txt): "Ciao mondo!"

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;
}

Altri suggerimenti

È necessario utilizzare XML richiesta HTTP come oggetti ActiveX di file non è supportato da alcun altro browser diverso da IE.

Questo codice funziona perfettamente bene durante la lettura txt locale o qualsiasi altro file troppo.

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)
}

ho risolto nella vecchia maniera - leggere riga per riga:

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

Spero che vi aiuterà futuri lettori ^ _ ^

in Firefox si può leggere direttamente il file.

Maggiori informazioni su https: //developer.mozilla. org / it-IT / Add-ons / Code_snippets / File_I_O # Line_by_line

per leggere file riga per riga utilizzare il seguente

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top