IE Macro Scripting - 如何使用javascript读取本地.text文件

时间:2009-08-06 15:22:52

标签: javascript imacros

如果您想自动化某些网络,可以使用此IMacro脚本工具 使用javascript进行页面访问。

我想让我的javascript从本地.txt文件中读取 (不是.cvs文件,格式不好..我想在其中搜索 用正则表达式..) 并且基于该阅读,该脚本将在IMacros中完成一些工作..(例如,打电话给一些网站 网址等。)

你们有什么想法可以做到这一点吗?我正在做的一切 本地,这是我的本地浏览器从我的本地硬盘读取..它应该 在某种程度上可能......但是怎么样?

3 个答案:

答案 0 :(得分:1)

您必须使用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)
}

答案 1 :(得分: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');

希望它能帮助未来的读者^ _ ^

答案 2 :(得分:1)

在Firefox中

可以直接读取文件。

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