Я знаю, что в этом проекте есть отказ от поддержки всего CSSOM, но я столкнулся с некоторыми ошибками при попытке заставить HTML Inspector работать с jsdom вместо PhatomJS, и я отследил это до отсутствия этих двух свойств в CSSStyleSheet
объект.
Насколько я могу судить, следующая функция в 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 все еще не поддерживается, верно?
Если это так, я с радостью попробую добавить
Спасибо !
@lexoyo Мне это тоже нужно, и я пытался разобраться в этом, но не знаю, как ...
Есть файл HTMLStyleElement-impl.js, который вызывает createStylesheet () в helpers> stylesheet.js, а вот куча мусора и TODO.
Мне кажется, что вместо этого следует использовать "cssom", который (кажется) имеет то, что нам нужно, но не знаю, как в данный момент. Также у меня нет больше времени, так что я займусь расследованием, если у меня будет еще немного времени. Если разберетесь, дайте мне знать!
Самый полезный комментарий
@lexoyo Мне это тоже нужно, и я пытался разобраться в этом, но не знаю, как ...
Есть файл HTMLStyleElement-impl.js, который вызывает createStylesheet () в helpers> stylesheet.js, а вот куча мусора и TODO.
Мне кажется, что вместо этого следует использовать "cssom", который (кажется) имеет то, что нам нужно, но не знаю, как в данный момент. Также у меня нет больше времени, так что я займусь расследованием, если у меня будет еще немного времени. Если разберетесь, дайте мне знать!