このプロジェクトにはすべてのCSSOMをサポートしていないという免責事項があることは知っていますが、 HTML InspectorをPhatomJSではなくjsdomで動作させようとしたときにエラーが発生し、 CSSStyleSheet
にこれら2つのプロパティがないことを追跡しました。
私の知る限り、level2 / style.jsの次の関数は、これを追加できる/追加する必要がある場所ですが、コードベースに精通していないため、確実に知ることはできません。
function evaluateStylesheet(data, sheet, baseUrl) {
// this is the element
var newStyleSheet = cssom.parse(data);
var spliceArgs = newStyleSheet.cssRules;
spliceArgs.unshift(0, sheet.cssRules.length);
Array.prototype.splice.apply(sheet.cssRules, spliceArgs);
scanForImportRules.call(this, sheet.cssRules, baseUrl);
// Add references to `this` and `baseUrl`.
sheet.href = baseUrl;
sheet.ownerNode = this;
this.ownerDocument.styleSheets.push(sheet);
}
とにかく、これは私にとってローカルでの仕事を変えたので、うまくいけばそれはそれと同じくらい簡単です。 検討していただきありがとうございます。
良いキャッチ。 私はこれをバグとしてタグ付けし、うまくいけば、あなたの修正のより原則的なバージョンをすぐに入手します。
FWIW、クロスオリジンポリシーでは、同一生成元以外のスタイルシートはdocument.styleSheets
含まれないように指示されていると思います。 jsdomが処理中のファイルの出所をどのように処理するかわからないので、これは注意が必要かもしれませんが、どちらにしても、覚えておく価値があると思います。
こんにちは
これについて問題を提起しようとしていましたが、ownerNodeはまだサポートされていませんか?
もしそうなら、私はそれを追加しようと喜んでします
THX !
@lexoyo私もこれが必要で、
ヘルパー> stylesheet.jsにcreateStylesheet()を呼び出すファイルHTMLStyleElement-impl.jsがあり、ここにたくさんのゴミとTODOがあります。
代わりに「cssom」を使用する必要があるように思われます。これには必要なものが含まれているようですが、現時点ではどのようになっているのかわかりません。 また、時間がないので、もう少し時間があればさらに調べてみます。 あなたがそれを理解するならば、私に知らせてください!
最も参考になるコメント
@lexoyo私もこれが必要で、
ヘルパー> stylesheet.jsにcreateStylesheet()を呼び出すファイルHTMLStyleElement-impl.jsがあり、ここにたくさんのゴミとTODOがあります。
代わりに「cssom」を使用する必要があるように思われます。これには必要なものが含まれているようですが、現時点ではどのようになっているのかわかりません。 また、時間がないので、もう少し時間があればさらに調べてみます。 あなたがそれを理解するならば、私に知らせてください!