2016-10-26 24 views
7

Czy istnieje natywny sposób kodowania lub dekodowania HTML entities przy użyciu JavaScript lub ES6? Na przykład < zostanie zakodowany jako &lt;. Istnieją biblioteki takie jak html-entities dla Node.js, ale wydaje się, że powinno być coś wbudowanego w JavaScript, które obsługuje już tę powszechną potrzebę.Natywna metoda JavaScript lub ES6 do kodowania i dekodowania encji HTML?

+2

Nie ma rodzimy zakład JavaScript. JavaScript język programowania nie ma wiele wspólnego z HTMLem, głupkowatymi API na prototypie String, niezależnie od tego. – Pointy

+0

@Pointy Myślę, że ogólnie mówiąc masz rację. Wydaje się, że skoro JavaScript jest tak szeroko wykorzystywany w Internecie, a elementy HTML są wspólną cechą tworzenia stron internetowych, coś podobnego trafiłoby do tego języka w ciągu ostatniej dekady. –

+0

Myślę, że na to pytanie skorzystałoby jednoznacznie, w tym zakresie, istnienie takiej funkcji w przeglądarkach i bibliotece standardowej nodejs w jej zakresie. – hippietrail

Odpowiedz

3

W języku JavaScript API nie ma natywnej funkcji, która konwertuje znaki ASCII na ich odpowiednik "encji html". Oto beginning of a solution i easy trick że może chcesz

+0

Dzięki za odpowiedź (niewygodne, jak może), to, czego chcę, nie istnieje. Czy możesz jednak opublikować inne rozwiązanie? Lub po prostu usunąć link rozwiązania? To połączone rozwiązanie ani dekoduje elementów HTML, ani nie obsługuje '&' kontra kodowanie numeryczne. –

+0

Zobacz link "łatwa sztuczka", aby uzyskać szybsze rozwiązanie. –

0

Aby zdekodować html wystarczy użyć <pre> tag i tę funkcję:

function convertHTML(str) { 
 
    var entityPairs = [ 
 
     {character: '&', html: '&amp;'}, 
 
     {character: '<', html: '&lt;'}, 
 
     {character: '>', html: '&gt;'}, 
 
     {character: "'", html: '&apos;'}, 
 
     {character: '"', html: '&quot;'}, 
 
    ]; 
 

 
    entityPairs.forEach(function(pair){ 
 
     var reg = new RegExp(pair.character, 'g'); 
 
     str = str.replace(reg, pair.html); 
 
    }); 
 
    return str; 
 
} 
 

 
//var or file.html from Ajax 
 
var str = ` 
 
<head> 
 
    <title>OK</title> 
 
</head>`; 
 
document.getElementById("preHtml").innerHTML = convertHTML(str);
<pre id="preHtml"></pre>