12

私は現在、計算されたスタイルをJSDOM経由でブラウザーに送信する必要があるプロジェクトに取り組んでいます。私は現在、いくつかの基本的なCSSをJSDOMに挿入して、正しいインラインスタイルを計算できるようにする方法を探しています(はい、それは悪いことです)。

私が見つけたところから、JSDOMレベル2を使用できますが、そこからスタイルを挿入する方法に関するドキュメントが見つかりません。

これは私がこれまでに持っているものです。

    var document = jsdom.jsdom('<!DOCTYPE html><html><head></head><body id="abody" ></body></html>', jsdom.level(2, 'style'), {
        features : {
            FetchExternalResources : ['script', 'css'],
            QuerySelector : true
        }
    });

私はcssをheadタグに挿入していますが、役に立ちません。そして、私は上記のコードも間違って実行している可能性があることを知っています。

どんな助けでも素晴らしいでしょう。

4

1 に答える 1

13

まあ、これはちょっとばかげているように聞こえますが、これは私がしたことです:

    var path = require('path');
    var fs = require('fs');
    var mainCss = fs.readFileSync(path.normalize(__dirname + "web_main.css"), 'utf8');
    var document = jsdom.jsdom('<!DOCTYPE html><html><meta http-equiv="content-type" content="text/html; charset=utf-8"><head></head><body id="abody" ></body></html>', jsdom.level(3, 'index'), {
        features : {
            FetchExternalResources : ['script', 'css'],
            QuerySelector : true
        }
    });     
    var window = document.createWindow();
    var head = document.getElementsByTagName('head')[0];
    style = document.createElement("style");
    style.type = 'text/css';
    style.innerHTML = mainCss;
    head.appendChild(style);

つまり、基本的に変更したのは、レベルを3インデックスに移動することだけで、最初のhtmlに直接含めるのではなく、後で追加しました。

とてもシンプルで、他の人の助けになることを願っています。

于 2012-04-26T16:46:15.017 に答える