Alt attribute encoding with JavaScript

后端 未结 4 1597
深忆病人
深忆病人 2020-12-03 22:07

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

\"A


        
相关标签:
4条回答
  • 2020-12-03 22:43
    <!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>
    

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

    0 讨论(0)
  • 2020-12-03 22:46

    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 &#8594;.

    0 讨论(0)
  • 2020-12-03 22:57

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

    document.getElementById('formula').alt = 'A \u2192 B';
    
    0 讨论(0)
  • 2020-12-03 22:58

    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.

    0 讨论(0)
提交回复
热议问题