作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我注意到,当我在下面的代码中使用 JavaScript 获取“包含反斜杠的属性值”时,反斜杠被转义了。
console.log(document.getElementById("test").getAttribute("class")); // -> \A
console.log(document.getElementById("test").getAttribute("class").replace("\\A", "\A")); // -> A
console.log(document.getElementById("test").dataset.b); // -> \B
console.log(document.getElementById("test").dataset.b.replace("\\B", "\B")); // -> B
<div id="test" class="\A" data-b="\B"></div>
反斜杠在 JavaScript 中被视为特殊字符,两个反斜杠 (\\
) 代表一个反斜杠 (\
)。
上述代码的结果意味着,当使用 JavaScript 使用 getAttribute()
获取属性值时,一个反斜杠 (\
) 会转义为两个反斜杠 ( >\\
) 在某处。
但是,在 specification ,好像没有应用相应的流程。
<小时/>在getAttributes()
的哪个过程中,HTML属性的反斜杠被转义(\
-> \\
)?
最佳答案
字符串文字(需要转义)和来自其他地方(如 html、ajax 等)的字符串值之间存在差异,这就是它们的样子。仅当转换为文字时(例如:JSON.stringify、某些控制台 View 等),JS 字符串才会有反斜杠转义。转义符是一个输出格式化工件;在内部,字符序列中没有转义。
由于标准的不同根源,HTML 不需要对黑斜杠进行相同的转义。属性不会“转换”为带有转义反斜杠的属性,除非它被格式化为字符串文字。这将发生在字符串和可见输出之间的阶段。您可以使用alert()而不是console.log()来查看字符串的实际情况。我相信,特别是对于控制台来说,目标是为开发人员提供更多帮助,而不是准确了解内部情况。
关于javascript - HTML 属性反斜杠何时转义为 JavaScript 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57961820/
我是一名优秀的程序员,十分优秀!