我想使用 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();
但是:
console.log(document.querySelector)
返回
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();
运行
console.log(document.querySelector)
现在显示函数存在。
关于node.js - jsdom - document.querySelector 已启用,但文档中缺少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13544179/