Почему OwnerNode StyleSheet становится пустым после вставки? - PullRequest
0 голосов
/ 06 октября 2018

Может кто-нибудь объяснить, почему StyleSheet ownerNode равно null после того, как я установил для textContent что-то?

const style = document.createElement('style')
document.head.appendChild(style)
const sheet = style.sheet
// passes
console.assert(sheet.ownerNode !== null, 'ownerNode is null')
sheet.ownerNode.textContent = 'div { color: red }'
// fails
console.assert(sheet.ownerNode !== null, 'ownerNode is null')

1 Ответ

0 голосов
/ 06 октября 2018

Поскольку, полностью заменив текст узла, вы создали новый , замещающий объект таблицы стилей:

const style = document.createElement('style')
document.head.appendChild(style)
const sheet = style.sheet
sheet.ownerNode.textContent = 'div { color: red }'
console.log(style.sheet === sheet);           // <===== false!
console.log(style.sheet.ownerNode === style); // <===== true

Старый больше не находится в DOM, поэтому у него нет ownerNode.

...