mirror of
https://gitee.com/shuto-github/Shadow-DOM-inject-styles.git
synced 2024-10-05 19:52:06 +08:00
Fix injection in case if there is no style-element
This commit is contained in:
parent
ab751443b4
commit
04bacdf39a
20
src/index.ts
20
src/index.ts
@ -1,19 +1,13 @@
|
||||
export function injectStyles(
|
||||
shadowRootElement: HTMLElement,
|
||||
insertBeforeSelector: string,
|
||||
styles: string
|
||||
) {
|
||||
export function injectStyles(shadowRootElement: HTMLElement, insertBeforeSelector: string, styles: string) {
|
||||
const root = shadowRootElement.shadowRoot;
|
||||
let styleAlreadyAdded = false;
|
||||
const currentStyleTags = Array.from(root.querySelectorAll('style'));
|
||||
currentStyleTags.forEach((element: HTMLStyleElement, index) => {
|
||||
if (element.innerHTML === styles) {
|
||||
styleAlreadyAdded = true;
|
||||
}
|
||||
if (currentStyleTags.length - 1 === index && styleAlreadyAdded === false) {
|
||||
|
||||
if (root !== null) {
|
||||
const styleElements = root.querySelectorAll('style');
|
||||
|
||||
if (!Array.from(styleElements).some(el => el.innerHTML === styles)) {
|
||||
const newStyleTag = document.createElement('style');
|
||||
newStyleTag.innerHTML = styles;
|
||||
root.insertBefore(newStyleTag, root.querySelector(insertBeforeSelector));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user