9

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を正しく機能させるにはどうすればよいですか?

4

2 に答える 2

13

これに対する答えを自分で見つけました。

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)

関数が存在することを示します。

于 2012-11-24T18:50:54.903 に答える