хорошо, так что вот, для справки, https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style
type
для элемента стиля является атрибутом, а не свойством. материал, который находится внутри любого элемента html, например <img src="">
sr c, является атрибутом, а не свойством элемента img.
, поэтому, когда вы пытаетесь присвоить значение свойству переменной стиля, которая является элементом стиля, js просто создаст свойство (тип) для переменной стиля, а затем назначит значение, которое вы ему дадите.
Извините, я не ответил на ваш вопрос ранее. при дальнейшем исследовании я обнаружил, что .type уже является свойством элемента стиля, и его не следует использовать в соответствии с whatgw.org и «В частности, значением типа с параметрами, такими как» текст / CSS; charset = utf-8 ", заставит этот алгоритм возвращаться раньше." [https://html.spec.whatwg.org/multipage/semantics.html#the -style-element] .
Я действительно наблюдал это поведение из моей скрипки , где я взял ваш код и добавил оператор console.log до sheet.insertRule()
вызова и после, чтобы увидеть, что случилось с style.sheet.
, чтобы было ясно, что во время .insertRule () движок возвращает новый элемент стиля в дочерний элемент элемента head. в этом случае он возвращается преждевременно без добавления стилей в for в l oop.
Интересно, если вы сделаете style.type2 = 'css/text'
или любой другой текст, который вы хотите. возвращение таблицы стилей (CSSStyleSheet) будет иметь добавленные стили в rules: ruleList[]
.
я надеюсь, что это, по крайней мере, даст некоторые дополнительные сведения о причине, по которой стили не отображаются при выполнении style.type = 'css/text'