如何直接从 htmlparser2 获取 js 上下文



如何直接从htmlparser2获取JS上下文?

 var parser = new htmlparser.Parser({
    onopentag: function(name, attribs){
        if(name === "script" && attribs.type === "text/javascript"){
            //console.log(text);
            //console.log("JS! Hooray!");
        }
    },
    ontext: function(text){
        //fs.writeFileSync("../output/test.js",text.toString());
        console.log(text);
    },
    onclosetag: function(tagname){
        if(tagname === "script"){
            //console.log("That's it?!");
        }
    }
}, {decodeEntities: true});
var input_src = fs.readFileSync('../input/test2.js', 'utf-8');
parser.write(input_src);
parser.end();

尝试从htmlparser2获取js,但内容不是我想要的。内容将包括一些其他信息期望 js。为什么代码不能很好地工作?你能给我一些解决它的好方法吗?

您没有执行任何操作来将ontext函数限制为仅读取脚本。每当遇到打开脚本标记时,都需要设置一个标志:

 var inScriptElement = false;
 var parser = new htmlparser.Parser({
    onopentag: function(name, attribs){
        if(name === "script" && attribs.type === "text/javascript"){
            inScriptElement = true;
            //console.log(text);
            //console.log("JS! Hooray!");
        }
    },
    ontext: function(text){
        if (inScriptElement) {
            //fs.writeFileSync("../output/test.js",text.toString());
            console.log(text);
        }
    },
    onclosetag: function(tagname){
        if(tagname === "script"){
            inScriptElement = false;
            //console.log("That's it?!");
        }
    }
}, {decodeEntities: true});

最新更新