摘要:jsdom关于virtualconsole的一点问题

下载的为15.2.1的jsdom,其中的virtulconsole实测没有用,应该是bug,但是下载以前的版本就可以用

测试代码如下:

const  jsdom = require("jsdom");
 const  {JSDOM} = jsdom;
 var virtualConsole = new jsdom.VirtualConsole();
 virtualConsole.on("log", function (message) {
  console.log("console.log called ->", message);
});
 virtualConsole.sendTo(console);
const dom = new JSDOM(`<body>
  <script>console.log("1")</script>
</body>`,{runScripts:"dangerously"},{virtualConsole});
//注意{runScripts:"dangerously"}必须在vitualConsole前面,不然console.log("1")是不会运行的。

运行结果:
爬虫伪造浏览器环境之jsdom(二)1.jpg

版本为9.0.0的jsdom,其中的virtulconsole表现正常

测试代码如下:


var jsdom = require("jsdom");
const consola = require('consola')
var virtualConsole = jsdom.createVirtualConsole();
 virtualConsole.sendTo(consola);
virtualConsole.on("log", function (message) {
  console.log("console.log called ->", message);
});

var document = jsdom.jsdom(`<body>
  <script>console.log("1")</script>
</body>`, {
  virtualConsole: virtualConsole
});

运行结果:

爬虫伪造浏览器环境之jsdom(二)2.jpg