IE Scripting Macro - Como ler um arquivo de .text local usando javascript
-
11-09-2019 - |
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?
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);