0

我试图通过google-prettify一些 jQuery 在我的 Tumblr 博客中包含语法高亮。

Google-prettify需要<pre>元素有一个类prettyprint才能突出显示语法,但由于我使用降价来创建我的 Tumblr 帖子,所以我无法向我的<pre>元素添加类。

我的解决方案是使用这个 jQuery 片段将prettyprint类附加到<pre>元素:

<script type='text/javascript'>
$(document).ready(function() {
      $('pre').addClass('prettyprint');
      prettyPrint();
});
</script>

这工作正常,但我希望能够复制和粘贴我想在我的 Tumblr 上显示的代码,而不是每次我想发布代码片段时都转换<&lt;>转换。&gt;

使用 jQuery,我想用它们对应的 html 代码替换所有的<and >,但只能在pre元素内。然而,这可能会有一些问题,因为它需要在代码美化之前替换所有这些。

我可以附加新类,替换标签,然后调用prettyPrint();初始化所有内容吗?或者我应该在发布代码之前手动将 html 字符更改为 htmlentities 吗?

小更新: 此脚本适用于更改<and >,除了<body>,<html><head>...

<script type='text/javascript'>
$(function() {
   var $pre = $('pre');
   $pre.html($pre.html().replace(/</g, 'f').replace(/>/g, 'l'));
});
</script>

<pre>
    <html></html>
    <body></body>
    <head><head>
    <i></i>
</pre>

注意:我用作f替换只是为了测试代码。

4

1 回答 1

0

如果首先用实体替换所有 & 符号,然后是小于号,则可以将返回的字符串用作 a 中的文本节点<pre>,或者将其空白设置为“pre”的任何块容器。

function stripX(str){
    return str.replace(/\&(?!(\w+;))/g, '&amp;').replace(/</g, '&lt;');
}
于 2012-06-14T03:32:34.533 回答