1

node.js サーバーで jdom と jquery を使用しており、次のコードで次の奇妙な動作を観察しました。

var divs = window.$('div').each(function() {
              //console.log(" -", $(this));
              $(this).css('background-color','green');
              $(this).addClass('sel');
              this.style.backgroundColor = "green";
            });

考えられるあらゆる方法を使用して、html ページの div に何らかのスタイル (背景色から緑) を追加しようとしました。上記の試みはすべて(私もそれらのいずれかが独立して機能するかどうかを確認するために1つずつ試しました)、次のような同じ結果を生成しました:<div id="somedivid" style="">

スタイルは書き込まれませんが (引用符内は常に空です)、元のドキュメントを確認すると、これらの div にスタイル属性がなかった場合にスタイル属性が追加されるため、これはバグでしょうか。カスタムCSSスタイルブロックのページの上部に手動で作成したクラスselを追加すると、機能しますが、あなたがそうすべきだと思うのとまったく同じです。問題は、jsdom の使用中に個々のオブジェクトのスタイルを動的に変更できるようにしたいということです。これがバグなのか、何か見落としているのか、誰にもアイデアがありますか?

ちなみに、このコードは標準のjqueryを実行している通常のブラウザでも問題なく動作するので、なんとなくjsdomの実装になりそうです。

4

1 に答える 1

0

あなたはそれを行うための1つの方法を逃しました...多分これはうまくいきます:

this.setAttribute('style', 'background-color: green;');

また:

this.setAttribute('class', 'sel');

'sel'クラスが以前に定義されている場合は後者。

それが機能する場合は、「jsdom」が現在の計算されたスタイルではなく、(HTMLマークアップの)解析されたスタイルをシリアル化していることを意味している可能性があります。これが予想される動作だと思います。

于 2012-11-29T19:13:49.407 に答える