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.
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!
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!