Я собираю некоторую офлайновую техническую документацию, и поэтому написал несколько javascript для очень простой подсветки синтаксиса, и теперь для удобства я использую его для замены символов <
и >
, чтобы сэкономить время на избегайте их вручную.
Проблема в том, что это прекрасно работает для многих тегов html, за исключением блоков <html>
, <head>
и <body>
.
HTML в блоках <code>
присутствует в DOM, но JS, похоже, не находит их.
Я понимаю, что рассматриваемый HTML-код недействителен, но, учитывая, что он присутствует при просмотре исходного кода страницы, не должен ли он все же быть найден?
function stringReplace(str,from,to) {
if (str) return str.replace(from,to)
}
var htmlChars = [
["<", "<"],
[">", ">"]
];
function escapeHtmlChars(elementTagName, chars) {
var codeSections = document.getElementsByTagName(elementTagName);
for (var i = 0; i < codeSections.length; i++) {
var codeContent = codeSections[i].innerHTML;
for (var j = 0; j < chars.length; j++) {
codeContent = stringReplace(codeContent, chars[j][0], chars[j][1])
codeSections[i].innerHTML = codeContent;
}
}
}
window.addEventListener("load", function() {
console.log(
escapeHtmlChars("code", htmlChars)
)
});
<code class="code-snippet"><!doctype html>
<html>
<head>
<style type="text/css"></style>
</head>
<body>
</body>
</html>
</code>