Jsdom: CSSStyleSheet não tem propriedades ownerNode ou href.

Criado em 2 jan. 2015  ·  4Comentários  ·  Fonte: jsdom/jsdom

Eu sei que este projeto tem uma isenção de responsabilidade sobre não oferecer suporte a todos os CSSOM, mas encontrei alguns erros ao tentar fazer com que o Inspetor de HTML funcione com jsdom em vez de PhatomJS, e rastreei a falta dessas duas propriedades no CSSStyleSheet object.

Pelo que eu posso dizer, a seguinte função em level2 / style.js é onde isso poderia / deveria ser adicionado, mas não estou familiarizado o suficiente com a base de código para saber com certeza.

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);
}

De qualquer forma, isso mudou o trabalho para mim localmente, então espero que seja simples assim. Obrigado pela consideração.

bug css important or easy

Comentários muito úteis

@lexoyo Eu também preciso disso e tenho tentado investigar - mas não sei como ...

Existe um arquivo, HTMLStyleElement-impl.js, que chama createStylesheet () em helpers> stylesheet.js e aqui está um monte de lixo e TODO's.

Parece-me que "cssom" deve ser usado em vez disso, que (parece) tem o que precisamos - mas, não tenho certeza como no momento. Além disso, não tenho mais tempo, então vou investigar mais se conseguir mais tempo. Se você descobrir, por favor me avise!

Todos 4 comentários

Boa pegada. Vou marcar isso como um bug e espero obter uma versão mais baseada em princípios de sua correção em breve.

FWIW, acredito que as políticas de origem cruzada determinam que as folhas de estilo que não sejam da mesma origem não sejam incluídas em document.styleSheets . Não tenho certeza de como jsdom trata a origem do arquivo que está sendo processado, então isso pode ser complicado, mas de qualquer forma, acho que é algo que vale a pena manter em mente.

Olá
Eu estava prestes a registrar um problema para isso, ownerNode ainda não é compatível, certo?
Se for o caso, terei prazer em tentar adicioná-lo
THX !

@lexoyo Eu também preciso disso e tenho tentado investigar - mas não sei como ...

Existe um arquivo, HTMLStyleElement-impl.js, que chama createStylesheet () em helpers> stylesheet.js e aqui está um monte de lixo e TODO's.

Parece-me que "cssom" deve ser usado em vez disso, que (parece) tem o que precisamos - mas, não tenho certeza como no momento. Além disso, não tenho mais tempo, então vou investigar mais se conseguir mais tempo. Se você descobrir, por favor me avise!

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

potapovDim picture potapovDim  ·  4Comentários

domenic picture domenic  ·  3Comentários

khalyomede picture khalyomede  ·  3Comentários

cg433n picture cg433n  ·  3Comentários

vsemozhetbyt picture vsemozhetbyt  ·  4Comentários