Jsdom: CSSStyleSheet не имеет свойств ownerNode или href.

Созданный на 2 янв. 2015  ·  4Комментарии  ·  Источник: jsdom/jsdom

Я знаю, что в этом проекте есть отказ от поддержки всего 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);
}

В любом случае, это изменило мою работу на местном уровне, так что, надеюсь, это так просто. Спасибо за внимание.

bug css important or easy

Самый полезный комментарий

@lexoyo Мне это тоже нужно, и я пытался разобраться в этом, но не знаю, как ...

Есть файл HTMLStyleElement-impl.js, который вызывает createStylesheet () в helpers> stylesheet.js, а вот куча мусора и TODO.

Мне кажется, что вместо этого следует использовать "cssom", который (кажется) имеет то, что нам нужно, но не знаю, как в данный момент. Также у меня нет больше времени, так что я займусь расследованием, если у меня будет еще немного времени. Если разберетесь, дайте мне знать!

Все 4 Комментарий

Хороший улов. Я отмечу это как ошибку и, надеюсь, скоро получу более принципиальную версию вашего исправления.

FWIW, я считаю, что политики перекрестного происхождения диктуют, что таблицы стилей другого происхождения не включаются в document.styleSheets . Я не уверен, как jsdom обрабатывает происхождение файла, который он обрабатывает, так что это может быть сложно, но в любом случае я думаю, что об этом стоит помнить.

Здравствуйте
Я собирался сообщить об этом, ownerNode все еще не поддерживается, верно?
Если это так, я с радостью попробую добавить
Спасибо !

@lexoyo Мне это тоже нужно, и я пытался разобраться в этом, но не знаю, как ...

Есть файл HTMLStyleElement-impl.js, который вызывает createStylesheet () в helpers> stylesheet.js, а вот куча мусора и TODO.

Мне кажется, что вместо этого следует использовать "cssom", который (кажется) имеет то, что нам нужно, но не знаю, как в данный момент. Также у меня нет больше времени, так что я займусь расследованием, если у меня будет еще немного времени. Если разберетесь, дайте мне знать!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

tolmasky picture tolmasky  ·  4Комментарии

domenic picture domenic  ·  3Комментарии

lehni picture lehni  ·  4Комментарии

drewish picture drewish  ·  4Комментарии

machineghost picture machineghost  ·  4Комментарии