通过javascript解析CSS。边缘和铬之间的不一致性

通过javascript解析CSS。边缘和铬之间的不一致性,javascript,css,google-chrome,microsoft-edge,Javascript,Css,Google Chrome,Microsoft Edge,我正在用JSA CSS解析,我正在尝试获取“内容”CSS规则的Unicode整数值,但在Edge和Chrome中处理方式不同 在Edge中,“内容”是由7个字符组成的字符串: 在Chrome中,它是由3个字符组成的字符串: csDef是我的JS变量 以下是CSS规则的外观: 为什么在网络浏览中对该值的处理不同? 在JS中,如何在这些web浏览器中正确获取Unicode整数值 编辑: 下面是我加载CSS规则的方式: var rulesForCssText = function

我正在用JSA CSS解析,我正在尝试获取“内容”CSS规则的Unicode整数值,但在Edge和Chrome中处理方式不同

在Edge中,“内容”是由7个字符组成的字符串:

在Chrome中,它是由3个字符组成的字符串:

csDef
是我的JS变量

以下是CSS规则的外观:

为什么在网络浏览中对该值的处理不同? 在JS中,如何在这些web浏览器中正确获取Unicode整数值

编辑:

下面是我加载CSS规则的方式:

        var rulesForCssText = function (styleContent) {
            var doc = document.implementation.createHTMLDocument(""),
                styleElement = document.createElement("style");

            styleElement.textContent = styleContent;
            doc.body.appendChild(styleElement);

            return styleElement.sheet.cssRules;
        };

       var cssDefs =  Array.from(rulesForCssText(fileContent));
fileContent
是通过使用
file
对象获得的文件内容,我有一个
input type=“file”
,用户从磁盘选择文件。

免责声明:我没有明确的答案,但我从分析中学到了很多,我认为结果可能会引起其他人的兴趣


首先,让我分享两个测试用例。基于CSS的版本再现了您描述的问题:

var d=document.implementation.createHTMLDocument(“”);
var s=document.createElement(“样式”);
s、 textContent='.foo{content:\\20ac;}';
d、 身体.附肢儿童;;
var c=s.sheet.cssRules[0]。style.getPropertyValue(“内容”);

log(“字符串“%s”的长度为%d”,c,c.length)
可能是个愚蠢的问题,但是你在整个页面上有统一的字符集编码吗?好问题。我有
@charset“utf-8”设置在CSS文件的顶部。让我添加更多关于如何加载CSS规则的信息我认为Edge不支持它。这可能是问题的根源。(顺便说一句,在CanIUse上找不到它)。但是,我发现了以下内容:。关于MDN()。再次强调,边缘仍然是问题所在,但也许建议的polyfill()可以解决这个问题?谢谢。确切地说,如何使用polyfill?我看到它需要一个“缓冲区”:
新的文本解码器(“utf-8”)。解码(uint8array)如何获取
uint8array
?我到底应该写些什么呢?老实说,我刚刚偶然发现了这一点(这就是为什么我没有写正式答案)。只是希望一些额外的信息可以帮助你,但我个人还没有使用它到目前为止。