diff --git a/src/plugins/downloader/renderer.ts b/src/plugins/downloader/renderer.ts index dc63b3ba..fb8a3d0a 100644 --- a/src/plugins/downloader/renderer.ts +++ b/src/plugins/downloader/renderer.ts @@ -107,7 +107,8 @@ export const onRendererLoad = ({ ipc.on('downloader-feedback', (feedback: string) => { if (progress) { - progress.innerHTML = feedback || t('plugins.downloader.templates.button'); + const targetHtml = feedback || t('plugins.downloader.templates.button'); + progress.innerHTML = window.trustedTypes?.defaultPolicy ? window.trustedTypes.defaultPolicy.createHTML(targetHtml) : targetHtml; } else { console.warn( LoggerPrefix, diff --git a/src/plugins/lyrics-genius/renderer.ts b/src/plugins/lyrics-genius/renderer.ts index 748a5b20..a0b4269b 100644 --- a/src/plugins/lyrics-genius/renderer.ts +++ b/src/plugins/lyrics-genius/renderer.ts @@ -10,7 +10,7 @@ export const onRendererLoad = ({ ipc: { invoke, on }, }: RendererContext) => { const setLyrics = (lyricsContainer: Element, lyrics: string | null) => { - lyricsContainer.innerHTML = ` + const targetHtml = `
${ lyrics?.replaceAll(/\r\n|\r|\n/g, '
') ?? @@ -20,6 +20,7 @@ export const onRendererLoad = ({ `; + lyricsContainer.innerHTML = window.trustedTypes?.defaultPolicy ? window.trustedTypes.defaultPolicy.createHTML(targetHtml) : targetHtml; if (lyrics) { const footer = lyricsContainer.querySelector('.footer'); diff --git a/src/plugins/playback-speed/renderer.ts b/src/plugins/playback-speed/renderer.ts index 26f46386..4e41d7b4 100644 --- a/src/plugins/playback-speed/renderer.ts +++ b/src/plugins/playback-speed/renderer.ts @@ -22,7 +22,8 @@ const updatePlayBackSpeed = () => { const playbackSpeedElement = document.querySelector('#playback-speed-value'); if (playbackSpeedElement) { - playbackSpeedElement.innerHTML = String(playbackSpeed); + const targetHtml = String(playbackSpeed); + playbackSpeedElement.innerHTML = window.trustedTypes?.defaultPolicy ? trustedTypes.defaultPolicy.createHTML(targetHtml) : targetHtml; } }; diff --git a/src/plugins/utils/renderer/html.ts b/src/plugins/utils/renderer/html.ts index aa000731..6f9c906a 100644 --- a/src/plugins/utils/renderer/html.ts +++ b/src/plugins/utils/renderer/html.ts @@ -6,7 +6,7 @@ export const ElementFromHtml = (html: string): HTMLElement => { const template = document.createElement('template'); html = html.trim(); // Never return a text node of whitespace as the result - template.innerHTML = html; + template.innerHTML = window.trustedTypes?.defaultPolicy ? window.trustedTypes.defaultPolicy.createHTML(html) : html; return template.content.firstElementChild as HTMLElement; }; diff --git a/src/renderer.ts b/src/renderer.ts index 46d49b48..2a263109 100644 --- a/src/renderer.ts +++ b/src/renderer.ts @@ -269,7 +269,8 @@ const defineYTMDTransElements = () => { const that = this as HTMLElement; const key = that.getAttribute('key'); if (key) { - that.innerHTML = i18t(key); + const targetHtml = i18t(key); + that.innerHTML = window.trustedTypes?.defaultPolicy ? window.trustedTypes.defaultPolicy.createHTML(targetHtml) : targetHtml; } }; customElements.define(