HTML页面中图像的alt属性中的Html实体must be encoded。所以
<img id="formula" alt="A → B" src="formula.png" />
会很好用。
另一方面,相同的JavaScript代码不起作用
document.getElementById('formula').alt = 'A → B';
并将生成 A&amp; rarr; B 而不是 A→B 。
当无法在源代码中放入特殊(未编码)字符时,如何通过JavaScript实现?
答案 0 :(得分:7)
JavaScript有自己的系统来转义字符串中的特殊字符:
document.getElementById('formula').alt = 'A \u2192 B';
答案 1 :(得分:1)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Decode HTML entities using JavaScript</title>
</head>
<body>
<img id="formula" src="vote-arrow-up-on.png" alt="A → C">
<script>
function html_entity_decode(str) {
var p = document.createElement("p");
p.innerHTML = str.replace(/</g,"<").replace(/>/g,">");
return p.innerHTML;
}
var theValue = html_entity_decode('A → B');
document.getElementById('formula').title = theValue;
</script>
</body>
</html>
编辑:我将原始代码更改为仅在innerHTML
元素上使用<p>
,而不是innerHTML
和 { {1}}的{1}}。
答案 2 :(得分:1)
如果您无法使用Unicode格式保存文件,则可以使用以下选项:
function decodeHTML(str) {
return str.replace(/&#(\d+);?/g, function() {
return String.fromCharCode(arguments[1])
});
}
但是,这需要您使用数字表示。在这种情况下→
。
答案 3 :(得分:0)
在这种特殊情况下,您在JavaScript中没有编码特殊HTML字符。
W3C验证器不应该抱怨这个(只是测试它),文档应该验证。如果没有发布您的代码,我会更新我的答案。