2009-08-06 6 views
2

javacriptを使用して ページ訪問を自動化する場合は、このIMacroスクリプトツールがあります。私は地元の.txtファイル から読み取るために私のジャバスクリプトを持っていると思いIMacroスクリプト - javacriptを使用してローカルの.txtファイルを読む方法

(ない.cvsファイルとうまくフォーマットされていない..私は正規表現で おそらくそれで検索したいと思います。) とその読みに基づいて、スクリプトはIMacrosでいくつかの仕事をします。(たとえば、いくつかのウェブサイトを呼び出すと URLなど)

どうすればいいですか?私はすべてローカルで をやっています。それは私のローカルハードドライブから読んでいる私のローカルブラウザです..それは何とか可能です.. する必要がありますどのように?

答えて

3

はい、これは、imacrosで実行できますが、javascript.jsファイルから呼び出す必要があります。あなたのコンテンツを1つのブロックとしてロードしてから、javascriptのindexOfメソッドを使用してテキスト内の文字列を検索し、if文を実行できます。 テキストの例(txtファイル内): "hello world!"

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

ActiveXのオブジェクトはIE以外のブラウザではサポートされていないため、xml http requestを使用する必要があります。

このコードは、ローカルのtxtやその他のファイルも読み込み中に完全に正常に動作します。

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

私は昔ながらの方法でそれを解決 - 行ずつ読み:

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

は、あなたが直接ファイルを読み取ることができるFirefoxで

1

^_ ^それは未来の読者を助けていただければ幸いです。 https://developer.mozilla.org/en-US/Add-ons/Code_snippets/File_I_O#Line_by_line

詳細は、使用行毎にファイルを読み込むための次

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); 
関連する問題