使用JavaScript进行Alt属性编码

时间:2010-05-05 17:13:27

标签: javascript special-characters encode html

HTML页面中图像的alt属性中的Html实体must be encoded。所以

<img id="formula" alt="A &rarr; B" src="formula.png" />

会很好用。

另一方面,相同的JavaScript代码不起作用

document.getElementById('formula').alt = 'A &rarr; B';

并将生成 A&amp; rarr; B 而不是 A→B

当无法在源代码中放入特殊(未编码)字符时,如何通过JavaScript实现?

4 个答案:

答案 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 &rarr; C">
    <script>
      function html_entity_decode(str) {
        var p = document.createElement("p");
        p.innerHTML = str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
        return p.innerHTML;
      }

      var theValue = html_entity_decode('A &rarr; B');
      document.getElementById('formula').title = theValue;
    </script>
  </body>
</html>

The JavaScript Source的信用。

编辑:我将原始代码更改为仅在innerHTML元素上使用<p>,而不是innerHTML { {1}}的{​​1}}。

答案 2 :(得分:1)

如果您无法使用Unicode格式保存文件,则可以使用以下选项:

function decodeHTML(str) {
    return str.replace(/&#(\d+);?/g, function() {
        return String.fromCharCode(arguments[1])
    });
}

但是,这需要您使用数字表示。在这种情况下&#8594;

答案 3 :(得分:0)

在这种特殊情况下,您在JavaScript中没有编码特殊HTML字符。

W3C验证器不应该抱怨这个(只是测试它),文档应该验证。如果没有发布您的代码,我会更新我的答案。