无法使 highlight.js 与我的 Javascript 功能一起使用

侯纳润

鉴于下面的脚本,我想使用highlight.js和我的 javascript突出显示 html 语法,但它不起作用。

var entityMap = {
  "&": "&",
  "<": "&lt;",
  ">": "&gt;",
  '"': "&quot;",
  "'": "&#39;",
  "/": "&#x2F;",
  "`": "&#x60;",
  "=": "&#x3D;",
};

function escapeHtml(string) {
  return String(string).replace(/[&<>"'`=\/]/g, function(s) {
    return entityMap[s];
  });
}

$(document).ready(function() {
  $("code").each(function(e) {
    code = $(this).html();
    raw = escapeHtml(code);
    $(this).html(raw);
    $(this)
      .parent();
  });
})

hljs.initHighlightingOnLoad();
<meta charset="UTF-8">
<title>Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.0.0/styles/default.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.0.0/highlight.min.js"></script>

<pre>
        <code class="html">
            <!DOCTYPE html>
            <title>Title</title>

            <style>body {width: 500px;}</style>

            <script type="application/javascript">
              function $init() {return true;}
            </script>

            <body>
              <p checked class="title" id='title'>Title</p>
              <!-- here goes the rest of the page -->
            </body>
                
        </code>
    </pre>

在上面的脚本中,我尝试使用函数escapeHtml(string)来转义任何给定的 html 语法实体,然后我调用了 highlight js 初始化,hljs.initHighlightingOnLoad();但似乎它无法正常工作。

这有什么问题?

瓦迪姆·胡列维奇

这不是最好的解决方案,我建议您找到一些方法来escapesource code您的页面上添加符号在服务器端(php、nodejs、...其他)是可能的。

<meta charset="UTF-8">
<title>Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.0.0/styles/default.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.0.0/highlight.min.js"></script>
<pre>
    <code class="html">
        <!DOCTYPE html>
        <title>Title</title>

        <style>body {width: 500px;}</style>

        <script type="application/javascript">
          function $init() {return true;}
        </script>

        <body>
          <p checked class="title" id='title'>Title</p>
          <!-- here goes the rest of the page -->
        </body>
    </code>
</pre>
<script>
const entityMap = {
    "&": "&amp;",
    "<": "&lt;",
    ">": "&gt;",
    '"': "&quot;",
    "'": "&#39;",
    "/": "&#x2F;",
    "`": "&#x60;",
    "=": "&#x3D;",
};

function escapeHtml(string) {
  return String(string).replace(/[&<>"'`=\/]/g, function(s) {
    return entityMap[s];
  });
}

document.addEventListener('DOMContentLoaded', (event) => {
  document.querySelectorAll('pre code').forEach((block) => {
    block.innerHTML = escapeHtml(block.innerHTML);
    hljs.highlightBlock(block);
  });
});

</script>

这是一个很好的例子https://codepen.io/r3hab/pen/KKPWJJw

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

$ rootScope在AngularJs中无法与我一起使用

Spring Boot-为什么@ComponentScan无法与我的软件包组合一起使用?

Web开发人员的JavaScript代码无法与我的html网站一起使用

为什么join(“,”)无法与我的数组一起使用?

我无法使inputmask与Vanilla JS一起使用

使用:after或:: after的Clearfix无法与我的彩色框一起使用

多媒体密钥无法与我的HP Probook 4540s一起使用

Wi-Fi无法与我的路由器一起使用,但可以与其他接入点一起使用

serialize()无法与我的表单一起使用

我的JavaScript无法与Chrome一起使用

ImageIcon无法与我一起使用

.stop()无法与我的悬停一起使用,以使快速移动工作-jQuery

Javascript / jQuery无法与我的html和CSS一起使用?

Paypal CreateBillingAgreement API调用无法与我的api凭据一起使用

Yii Framework 1.1 .. CGridview过滤器无法与我自己的搜索功能一起使用到模型中

JNativeHook键盘侦听器无法与我的Swing / GUI一起使用

无法使BOOST_FOREACH与我的自定义类一起使用

为什么setMargins无法与我的RelativeLayout一起使用?

无法将我的Javascript与HTML一起使用

Oracle REGEXP_SUBSTR无法与我的模式一起使用

无法使SaveFileDialog与我的网页一起使用

我的HTML文件无法与我的Javascript文件链接

CardView Recycler无法与我的List <SomeModel>一起使用

HTML按钮无法与我的JavaScript一起使用

无法使HTML5音频与我的MP3一起使用

无法读取文件并将其与我的代码一起使用

Shell选项“ OPTIONNAME”无法与我的脚本一起正常使用

无法让 VSCode 调试与我的 NodeJs 应用程序一起使用

无法获得与我的图像一起使用的透视图