Pergunta

Não é este imacro ferramenta de script, se você quiser automatizar algumas web visitas página usando javascript.

Eu gostaria de ter meu javascript para ler de um arquivo .txt locais (Não um .cvs arquivo e não bem formatado .. Eu gostaria de procurar nele, provavelmente, com uma expressão regular ..) e com base em que a leitura, o script vai fazer algum trabalho no iMacros .. (por exemplo chamar algum site url etc ..)

Vocês têm alguma idéia de como isso pode ser feito? Eu estou fazendo tudo local e que é o meu navegador local leitura do meu disco rígido local .. que deveria ser de alguma forma possível .. mas como?

Foi útil?

Solução

Sim, você pode fazê-lo com iMacros, mas você precisa chamá-lo de arquivo javascript.js. carregar o seu conteúdo como um bloco, então você pode usar javascript indexOf método para encontrar a corda no texto e realizar if. exemplo de texto (dentro do seu arquivo txt): "Olá mundo!"

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

Outras dicas

Você tem que usar xml http pedido como ActiveX objeto de arquivo não é suportado por qualquer outro navegador que IE.

Este código funciona perfeitamente bem ao ler txt local ou qualquer outro arquivo também.

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

Eu resolvi isso na maneira antiquado - lê linha por linha:

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

Hope ele vai ajudar futuros leitores ^ _ ^

no Firefox você pode ler o arquivo diretamente.

Mais informações em https: //developer.mozilla. org / en-US / Add-ons / Code_snippets / File_I_O # Line_by_line

para ler arquivo linha por linha uso o seguinte

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top