Node.js jsdom-document.querySelector已启用,但文档中缺少

Node.js jsdom-document.querySelector已启用,但文档中缺少,node.js,jsdom,native-methods,Node.js,Jsdom,Native Methods,我想使用JSDom执行一些服务器端DOM操作。但是,尽管明确启用了querySelector,但它在创建的文档中未定义: var jsdom = require('jsdom'); // Yep, we've got QuerySelector turned on jsdom.defaultDocumentFeatures = { QuerySelector: true }; var dom = jsdom.defaultLevel; var document = jsdom.jsdo

我想使用JSDom执行一些服务器端DOM操作。但是,尽管明确启用了querySelector,但它在创建的文档中未定义:

var jsdom = require('jsdom');

// Yep, we've got QuerySelector turned on
jsdom.defaultDocumentFeatures = {
  QuerySelector: true
};

var dom = jsdom.defaultLevel;

var document = jsdom.jsdom("<html><body><h1>Hello StackOverflow</h1></body></html>"),
window = document.createWindow();
返回

undefined

如何使用jsdom使document.querySelector正常工作?

自己找到了这个问题的答案

JSDom有一个“默认文档”以及对多个附加文档的支持

我最初的理解是,在默认文档上启用QuerySelector将在所有文档上启用它。这是不正确的

我需要在我正在创建的(非默认)文档上启用QuerySelector

工作代码如下:

var jsdom = require('jsdom');

var dom = jsdom.defaultLevel;

// QuerySelector must be turned on on the specificdocument we're creating
var document = jsdom.jsdom("<html><body><h1>Hello</h1></body></html>", null, {
  features: {
    QuerySelector: true
  }
}),
window = document.createWindow();

现在显示函数存在。

为什么不使用jQuery?@NiLL,因为jQuery有很多我不需要的代码,并且在大多数运行代码的环境(即所有当前浏览器)中,querySelector都是开箱即用的.不使用
9.2.1
至少:
TypeError:document.createWindow不是一个函数
如果我不能使用
document.querySelector
?这个文档在哪里?@chovy这是一个很好的问题,但答案是8年前的。也许您可以添加到当前jsdoc文档的链接?
var jsdom = require('jsdom');

var dom = jsdom.defaultLevel;

// QuerySelector must be turned on on the specificdocument we're creating
var document = jsdom.jsdom("<html><body><h1>Hello</h1></body></html>", null, {
  features: {
    QuerySelector: true
  }
}),
window = document.createWindow();
console.log(document.querySelector)