Jsdom: CSSStyleSheet no tiene propiedades ownerNode o href.

Creado en 2 ene. 2015  ·  4Comentarios  ·  Fuente: jsdom/jsdom

Sé que este proyecto tiene una exención de responsabilidad sobre no admitir todo el CSSOM, pero encontré algunos errores al intentar que HTML Inspector funcionara con jsdom en lugar de PhatomJS, y lo rastreé hasta la falta de estas dos propiedades en el CSSStyleSheet objeto.

Por lo que puedo decir, la siguiente función en level2 / style.js es donde esto podría / debería agregarse, pero no estoy lo suficientemente familiarizado con el código base para saberlo con 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 todos modos, esto cambió el trabajo para mí a nivel local, así que espero que sea tan simple como eso. Gracias por la consideración.

bug css important or easy

Comentario más útil

@lexoyo También necesito esto y he estado tratando de investigarlo, pero no estoy seguro de cómo ...

Hay un archivo, HTMLStyleElement-impl.js, que llama a createStylesheet () en helpers> stylesheet.js y aquí hay un montón de basura y TODO.

Me parece que debería usarse "cssom" en su lugar, que (parece) tener lo que necesitamos, pero no estoy seguro de cómo en este momento. Además, no tengo más tiempo, así que investigaré más a fondo si puedo conseguir más tiempo. ¡Si lo decifras avísame por favor!

Todos 4 comentarios

Buena atrapada. Etiquetaré esto como un error y espero obtener pronto una versión más basada en principios de su solución.

FWIW, creo que las políticas de origen cruzado dictan que las hojas de estilo que no sean del mismo origen no se incluyen en document.styleSheets . No estoy seguro de cómo jsdom trata el origen del archivo que está procesando, por lo que esto puede ser complicado, pero de cualquier manera creo que es algo que vale la pena tener en cuenta.

Hola
Estaba a punto de presentar un problema por esto, ownerNode aún no es compatible, ¿verdad?
Si es el caso, estaré encantado de intentar agregarlo.
Gracias !

@lexoyo También necesito esto y he estado tratando de investigarlo, pero no estoy seguro de cómo ...

Hay un archivo, HTMLStyleElement-impl.js, que llama a createStylesheet () en helpers> stylesheet.js y aquí hay un montón de basura y TODO.

Me parece que debería usarse "cssom" en su lugar, que (parece) tener lo que necesitamos, pero no estoy seguro de cómo en este momento. Además, no tengo más tiempo, así que investigaré más a fondo si puedo conseguir más tiempo. ¡Si lo decifras avísame por favor!

¿Fue útil esta página
0 / 5 - 0 calificaciones