簡體   English   中英

iMacro腳本-如何使用javascript讀取本地.txt文件

[英]IMacro Scripting - How to read a local .txt file using javascript

如果您想使用javascript自動進行某些網頁訪問,則有此IMacro腳本工具。

我想讓我的JavaScript從本地.txt文件(不是.cvs文件,並且格式不正確。.我想用正則表達式進行搜索..),並根據該閱讀結果編寫腳本將在IMacros中做一些工作。(例如,調用某些網站的網址等。)

你們知道如何做到這一點嗎? 我正在做本地的所有事情,那是我的本地瀏覽器從本地硬盤讀取的信息..應該是可以的..但是如何?

是的,您可以使用imacros來做到這一點,但是您需要從javascript.js文件中調用它。 將您的內容加載為一個塊,然后可以使用javascript indexOf方法在文本中查找字符串並執行if語句。 文本示例(在txt文件中):“您好,世界!”

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

我以老式的方式解決了問題-逐行閱讀:

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中,您可以直接讀取文件。

有關更多信息, 訪問https://developer.mozilla.org/zh-CN/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);

您必須使用xml http請求,因為IE之外的任何其他瀏覽器均不支持文件的Activex對象。

讀取本地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)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM