3

以下のコードは、jsdom ドキュメントで提供されているテストを実行するためだけに、server.js ファイルから抜粋した小さなスニペットです。

var window = jsdom.jsdom().createWindow();
jsdom.jQueryify(window, './jq.min.js' , function() {
  console.log('inside');
  window.$('body').append('<div class="testing">Hello World, It works</div>');
  console.log(window.$('.testing').text());
  console.log('end');
});

私が文字通り得た出力はただinsideのもので、サーバーはハングして戻りません。console.log(window);ウィンドウ オブジェクトが本当に作成されているかどうかを確認するためにデバッグ ステートメントを追加しましたが、オブジェクトの内容の詳細を示すかなり大きな出力ステートメントが生成されます。ただし、私が気づいたことの 1 つは、それがオブジェクトの定義済みメソッドであり、実際には rendersであることを出力が示していないことです。$windowconsole.log(window.$);undefined

jsdom がまだ開発モードであることは理解していますが、何か不足しているものはありますか?

いくつかの背景として、jsdom.env()メソッドを使用したり、既存の HTML マークアップからドキュメントを作成したりするなど、コードのいくつかのバリエーションを試しましたが、どちらも期待される結果をレンダリングしませんでした。

4

1 に答える 1

-1

このコード スニペットがお役に立てば幸いです。

createWindow = function(fn) {
    var window  = jsdom.jsdom().createWindow(),
        script = window.document.createElement('script');

    jsdom.jQueryify(window, function() {
        script.src = 'file://' + __dirname + '/some.library.js';
        script.onload = function() {
            if (this.readyState === 'complete') {
                fn(window);
            }
        }
    });
}

createWindow(function(window) {
    // Do your jQuery stuff:
    window.$('body').hide();
});

ここから

于 2011-04-28T08:12:28.670 に答える