在javascript中保持CSS字符串中的表单提要字符不变

在javascript中保持CSS字符串中的表单提要字符不变,javascript,Javascript,如何避免在javascript字符串中解析表单提要字符 我有一个变量保存这个字符串 var css = 'content: "\f005"'; 但是当我使用字符串时,它并没有保持不变。例如console.log(css)给出内容:“005” 到目前为止,我的“解决方案”是里尔黑客 decodeURIComponent( encodeURIComponent(css).replace(/%0C/g, "\\f") ); 有更好的办法吗 用例(更新) 我正在构建一个web小部件,并且我想

如何避免在javascript字符串中解析表单提要字符

我有一个变量保存这个字符串

var css = 'content: "\f005"';
但是当我使用字符串时,它并没有保持不变。例如
console.log(css)
给出
内容:“005”

到目前为止,我的“解决方案”是里尔黑客

decodeURIComponent(
    encodeURIComponent(css).replace(/%0C/g, "\\f")
);
有更好的办法吗

用例(更新) 我正在构建一个web小部件,并且我想要一个不依赖于CSS文件的JS库。因此,当我构建项目时,我读取缩小的css文件,并将其作为字符串注入JS文件。当JS库在客户端初始化时,它会创建一个
元素并在那里注入css

var style = document.createElement('style');
style.type = 'text/css';
var css = '...long css string...'; // form feed characters must be escaped
style.innerHTML = css;
document.getElementsByTagName('head')[0].appendChild(style);

如果要将文字字符
\f
写入Javascript字符串文字,则需要转义反斜杠:

var css = 'content: "\\f005"';

否则,
\f
将被解释为表单馈送字符。

如果要将文本字符
\f
写入Javascript字符串文本,则需要转义反斜杠:

var css = 'content: "\\f005"';

否则,
\f
将被解释为表单提要字符。

“但是当我使用它时,字符串并没有保持不变”好的,是的,它基本上是不变的:
\f
是一个表单提要。控制台不显示formfeeds。您在第二个代码段中使用了
\\f
,但在第一个代码段中,
\f
无法按预期工作,这让您感到惊讶@T.J.Crowder在我的例子中,我得到一个3000个字符长的字符串来描述css规则。我创建一个
元素,并设置
style.innerHtml=css
。但是所有包含´\f..`的规则都不起作用,因为我使用javascript设置样式。我认为这解决了这个问题,但这是一种实验技术…@deceze我使用
\\f
,因为我需要避开反斜杠。我并不感到惊讶:)我只是想知道我是否可以避免这种情况,只需使用字符串“未触及”。但是现在我知道了。“但是字符串在我使用它时并没有保持不变”是的,它基本上是不变的:
\f
是一个formfeed。控制台不显示formfeeds。您在第二个代码段中使用了
\\f
,但在第一个代码段中,
\f
无法按预期工作,这让您感到惊讶@T.J.Crowder在我的例子中,我得到一个3000个字符长的字符串来描述css规则。我创建一个
元素,并设置
style.innerHtml=css
。但是所有包含´\f..`的规则都不起作用,因为我使用javascript设置样式。我认为这解决了这个问题,但这是一种实验技术…@deceze我使用
\\f
,因为我需要避开反斜杠。我并不感到惊讶:)我只是想知道我是否可以避免这种情况,只需使用字符串“未触及”。但现在我知道了。我的例子中的字符串是一个缩小的css文件的内容。css文件大量使用
\fxxx
。所以我想我唯一的选择就是像我一样用
\\f
替换
\f
?如果要在JavaScript源代码中编写字符串文字,则需要避开反斜杠。如果您从其他地方获得该内容,JavaScript将不会像字符串文本一样解析它,也不会更改它。不清楚你的情况是什么。我的情况是:当我构建我的项目时,我读取一个缩小的css文件,并将其作为字符串文本注入JS文件。我已经更新了问题,解释了为什么我不想这样做。然后你需要正确地转义字符串。您不能简单地将某种语言注入另一种语言而不担心正确地转义这些值。在将文本注入Javascript的情况下,JSON对值进行编码,一切都可以。请参阅。我的示例中的字符串是缩小的css文件的内容。css文件大量使用
\fxxx
。所以我想我唯一的选择就是像我一样用
\\f
替换
\f
?如果要在JavaScript源代码中编写字符串文字,则需要避开反斜杠。如果您从其他地方获得该内容,JavaScript将不会像字符串文本一样解析它,也不会更改它。不清楚你的情况是什么。我的情况是:当我构建我的项目时,我读取一个缩小的css文件,并将其作为字符串文本注入JS文件。我已经更新了问题,解释了为什么我不想这样做。然后你需要正确地转义字符串。您不能简单地将某种语言注入另一种语言而不担心正确地转义这些值。在将文本注入Javascript的情况下,JSON对值进行编码,一切都可以。看见