使用 JavaScript 进行 Alt 属性编码

发布于 2024-08-31 14:19:33 字数 487 浏览 8 评论 0原文

Html 实体必须在图像的 alt 属性中进行编码 HTML 页面。所以

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

会运作良好。

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

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

并会产生 A &rarr; B 而不是 A → B

当无法将特殊(未编码)字符放入源代码中时,如何通过 JavaScript 做到这一点?

Html entities must be encoded in alt attribute of an image in HTML page. So

<img id="formula" alt="A → B" src="formula.png" />

will work well.

On the other hand, the same JavaScript code will not work

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

and will produce A → B instead of A → B.

How to do it through JavaScript, when it is not possible to put the special (unencoded) characters in the source code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

此岸叶落 2024-09-07 14:19:33

JavaScript 有自己的系统来转义字符串中的特殊字符:

document.getElementById('formula').alt = 'A \u2192 B';

JavaScript has its own system for escaping special characters in strings:

document.getElementById('formula').alt = 'A \u2192 B';
小瓶盖 2024-09-07 14:19:33

如果您无法使用 Unicode 格式保存文件,可以使用以下替代方法:

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

但是,这需要您使用数字表示形式。在本例中

Here's an alternative if you can't save your file using a Unicode format:

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

However, this requires you to use the numeric representation. In this case .

只为守护你 2024-09-07 14:19:33
<!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>

归功于 JavaScript 源代码

编辑:我将原始代码更改为仅在

元素上使用 innerHTML,而不是 innerHTML

<!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>

Credits to The JavaScript Source.

EDIT: I changed the original code to only use innerHTML on a <p> element, instead of innerHTML and value of a <textarea>.

唐婉 2024-09-07 14:19:33

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

W3C 验证器不应抱怨这一点(只是对其进行了测试)并且文档应该进行验证。如果没有发布您的代码,我将更新我的答案。

In that particular case, you don't have encode special HTML characters in JavaScript.

The W3C validator should not complain about this (just tested it) and the document should validate. If not post your code and I'll update my answer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文