Skip to content

Commit b80188a

Browse files
committed
Add HTML encode/decode functionality
1 parent 46b1ead commit b80188a

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

index.html

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
<a class="nav-link active" id="v-pills-base64-tab" data-toggle="pill" href="#base64" role="tab" aria-controls="base64" aria-selected="true">Base64 Encode/Decode</a>
2323
<a class="nav-link" id="v-pills-jwt-tab" data-toggle="pill" href="#jwt" role="tab" aria-controls="jwt" aria-selected="false">JWT Decode</a>
2424
<a class="nav-link" id="v-pills-url-tab" data-toggle="pill" href="#url" role="tab" aria-controls="url" aria-selected="false">URL Encode/Decode</a>
25+
<a class="nav-link" id="v-pills-html-tab" data-toggle="pill" href="#html" role="tab" aria-controls="html" aria-selected="false">HTML Encode/Decode</a>
2526
<a class="nav-link" id="v-pills-json-tab" data-toggle="pill" href="#json" role="tab" aria-controls="json" aria-selected="false">JSON Formatter</a>
2627
<a class="nav-link" id="v-pills-xml-tab" data-toggle="pill" href="#xml" role="tab" aria-controls="xml" aria-selected="false">XML Formatter</a>
2728
</div>
@@ -260,6 +261,50 @@ <h1>XML Formatter</h1>
260261
<div class="col-md-12">
261262
<pre id="preXmlOutput">
262263
<code id="preXmlOutputCode" class="language-xml">
264+
</code>
265+
</pre>
266+
</div>
267+
</div>
268+
</div>
269+
</div>
270+
<div class="tab-pane fade" id="html" role="tabpanel" aria-labelledby="v-pills-html-tab">
271+
<div class="container-fluid">
272+
<div>
273+
<div class="col-md-12" style="text-align: center;">
274+
<h1>HTML Encode/Decode</h1>
275+
</div>
276+
</div>
277+
<div class="row">
278+
<div class="col-md-12">
279+
Input
280+
</div>
281+
</div>
282+
<div class="row">
283+
<div class="col-md-12">
284+
<textarea id="textAreaHtmlInput" style="width: 100%; height: fit-content;"></textarea>
285+
</div>
286+
</div>
287+
<div class="row">
288+
<div class="col-md-1">
289+
<button type="button" class="btn btn-secondary" id="btnHtmlEncode"> Encode </button>
290+
</div>
291+
<div class="col-md-10"></div>
292+
<div class="col-md-1" >
293+
<button type="button" class="btn btn-secondary" id="btnHtmlDecode" style="float: right;"> Decode </button>
294+
</div>
295+
</div>
296+
<div class="row">
297+
&nbsp;
298+
</div>
299+
<div class="row">
300+
<div class="col-md-12">
301+
Output
302+
</div>
303+
</div>
304+
<div class="row">
305+
<div class="col-md-12">
306+
<pre id="preHtmlOutput">
307+
<code id="preHtmlOutputCode">
263308
</code>
264309
</pre>
265310
</div>

js/scripts.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ $(document).ready(function(){
66
$('#btnUrlDecode').click(function (){urlDecode();});
77
$('#btnJsonFormat').click(function (){jsonFormat();});
88
$('#btnXmlFormat').click(function (){xmlFormat();});
9+
$('#btnHtmlEncode').click(function (){htmlEncode();});
10+
$('#btnHtmlDecode').click(function (){htmlDecode();});
911
});
1012

1113
function base64encode(){
@@ -112,6 +114,26 @@ function xmlFormat(sourceXml){
112114
}
113115
};
114116

117+
function htmlEncode(){
118+
var text = get('textAreaHtmlInput').value;
119+
var encoded = text
120+
.replace(/&/g, '&amp;')
121+
.replace(/</g, '&lt;')
122+
.replace(/>/g, '&gt;')
123+
.replace(/"/g, '&quot;')
124+
.replace(/'/g, '&#39;');
125+
get('preHtmlOutputCode').innerText = encoded;
126+
}
127+
128+
function htmlDecode(){
129+
var text = get('textAreaHtmlInput').value;
130+
// Use the browser's internal parser.
131+
var parser = new DOMParser();
132+
var dom = parser.parseFromString(text, 'text/html');
133+
var decoded = dom.documentElement.textContent;
134+
get('preHtmlOutputCode').innerText = decoded;
135+
}
136+
115137
function get(id){
116138
return document.getElementById(id);
117139
}

0 commit comments

Comments
 (0)