2016-12-14 126 views
0

我正在使用Node.js编写一个脚本,该脚本可以通过下载的html循环来查找某些元素,然后通过将它们添加到命令来构建宏。我从浏览器的另一个宏调用该脚本(调用宏也下载html并将其放在一个文件中),我将把该宏放在循环中。问题是我无法执行脚本。我尝试使用browserify,它做了窍门,但它说fs.readFileSync()不是一个函数。我知道brfs,但是它创建了一个静态代码,并且Source.htm文件是动态的,并且将用其中的不同信息重新加载。所以我在这里沟里。我也阅读了关于browserify-fs的所有内容,但它没有做任何事情。下面的代码基本上是我写的小脚本,我没有包含browserify生成的部分。我也跳过了创建宏的部分,因为这是无关紧要的。我必须说,我是一个小菜鸟,我做了很多阅读,甚至到目前为止,但目前我不知道如何着手,任何帮助将不胜感激!如何使用browserify和fs下载页面的html并在脚本中使用它的元素?

var fs = require('fs'); 
    var pageSource = fs.readFileSync('Source.htm', 'utf8').toString().split("\n"); 
    var idStrings = []; 
    var userIDs = []; 

    //getting string lines from page source array containing ids 
    for(i in pageSource){ 
     if(pageSource[i].includes("id=\\")){ 
      idStrings[i] = pageSource[i]; 
      } 
    } 

    //getting numbers from string lines using regex 
    for(i in tradeStrings){ 
     userIDs[i] = idStrings[i].replace(/^\D+|\D+$/g, ""); 
    } 

    //sorting just in case 
    userIDs.sort(function(a,b){return a - b}); 

    //building macro and executing it... 
+0

不,你不能在browserify中使用'fs'。 'fs'只是用于服务器端Node.JS的模块。 – arufian

回答

0

基本上,Web浏览器不会允许脚本在硬盘上打开任意文件。这是为了用户安全 - 想象一下恶意网站可以通过完整的文件系统访问来做什么!

不是保存到文件,而是让第一个脚本将资源下载到一个JavaScript变量中,并从那里解析它。

+0

第一个宏是什么下载。完成后,它调用我发布的脚本,提取一些部分,然后用这些部分构建另一个宏并运行它。也许有另一个脚本刮页,然后传递给这个?不过,我认为这不会起作用。 –

+0

宏是指在Web浏览器中运行的js脚本?单独的脚本处理下载的原因是什么,而不是从脚本中的URL读取资源? – PMV

+0

宏由我的意思是IMacros这是一个允许浏览器自动化的扩展,抱歉不清除! –

相关问题