简洁过渡在标记中创建空的样式标记



目前在svelte中有一个bug,任何svelte/transition在触发时都会在文档头部创建一个新样式。不用说,当整个代码库都存在转换时,这种情况会迅速堆积起来。我想知道是否有人找到了一种方法来防止这种情况发生,或者如果我对自己的网站做了快速和肮脏的修复会破坏任何东西。

在顶层IsetInterval(),获得<head>中的所有空样式并删除它们。我不确定JS的同步特性是否使其安全,或者当时机刚刚好时,它是否会中断。

感谢

是否安全取决于与样式交互的Svelte代码是否是异步的。如果您的代码是同步的,它将不间断地运行,但是,如果将Svelte代码分割成多个交互,则它可能以一种导致问题的方式与样式标签交互。

发生这种情况的可能性很低,即使代码是异步的,因为如果您删除了样式标记,并且创建代码仍然有对它的引用,那么只要不依赖于层次结构(如父节点),样式标记是否已从文档中删除可能无关紧要。我怀疑有很多如果任何异步交互风格,但可以肯定的是,你要负责检查苗条的源代码。

我最近注意到这个问题。直到Svelte core修复了这个问题,我添加了以下代码:

const remove_empty_styles  = () => {
var styles = document.getElementsByTagName('head')[0].getElementsByTagName('style');
Array.from(styles).forEach(v=>{
if (v.innerText === '')
{
v.parentNode.removeChild(v);
}
})
}
setInterval(remove_empty_styles, 10000);

最新更新