#5410·cheerio

.css() 在数据 URI 的分号后跟有冒号时会分割声明

作者: Jaybhade创建于 2026年8月6日更新于 2026年8月6日

.cs()'当分号后的部分含有分号时,仍将声明分拆,并重写不相干的财产后会腐蚀式'属性。

测试了caiio 1.2.0(和目前的 " main " )。

  • 复制

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? Const cheio = 需要 ('cheerio') ;

const style = “背景:url (”数据:image/svg+xml;utf8,)” ; cons $ = cheario.load (<div tyle ='${style}' ></div>; div = $('div');

a. 控制台.log($div.cs ()); $div.css ("颜色","红色"); 控制台.log($div.attr ('style') ) ;


预期

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
{背景:'url ("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'/>")}'?
// 背景:url ("数据:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'/");颜色:红色;

实际数

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? { 背景 : “ url ("data: image/ svg+xml" , "utf8,"". {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? // 背景:url("数据:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'/");颜色:红色;


两个不同的问题:

1. 申报在 " ; " 数据URI内进行分拆,产生一个假的第二个财产。
2. 因为`.cs(prop, val)'将它分析的所有内容重新序列化,设置一个 * 无关的 * 财产将所刻出的价值写回元素。 URL现在包含";"和":",所以画面默默地停止了加载. 电话编码中没有任何内容触及“背景”。

为什么1134的修补没有覆盖这个

#1134 (和它之前的#907) 为 “url(data:image/png; base64,.)” 确定了相同的分数。 该固定装置保留一个没有结肠的碎片,作为先前价值的延续,该价值用于`base64,.'。 但一个数据URI,其文本在";" * does * 中包含一个结肠取去另一个分支并成为一个新的属性. `xmlns='http://www.w3.org/2000/svg'是这里的常见情况,因为内部的SVG数据几乎总是带有这种属性。

这同样适用于任何引用的具有`;'和`;'的价值:

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
cheario.load(QQLI样式=) 内容:"a;b:c" ("li"). css (;).
//{内容:"'a","b":"c"}预期:{内容:"'a";"b":"c"}

按CSS语法,a;或`:'在字符串或括号内是值的一部分,不单独声明。 通过一个符合光谱的剖析器(postcs)检查相同的输入,在每个情况中返回一个单个声明。

修补

在扫描分隔的 " ; " 和 " : " 处理所有这些问题时,略过所引用的章节和括号,并将 " Base64 " 案归入第1134号案,而不是专门分类。 很高兴打开公关——我已准备好更改和测试.

内容来源: cheeriojs/cheerio