【问题标题】:Prettifying code instead code tags without modifying HTML美化代码而不是代码标签而不修改 HTML
【发布时间】:2014-04-26 17:06:41
【问题描述】:

是否有一个很好的 JavaScript 库来格式化和着色带有 <code> 标签的代码,不需要我以任何方式修改 HTML?我无法控制 HTML,只能添加外部 JavaScript 代码。当然,我可以添加确实改变 HTML 的外部 JavaScript 代码......但是一个简单的 JavaScript 库来处理所有这些将是理想的。

更新:我目前正在每个页面中执行以下操作以使用 google-code-prettify:

<script>
  var codes = document.getElementsByTagName("code");
  for (var i = 0; i < codes.length; i++) {
    codes[i].className = 'prettyprint';
  }
</script>
<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js"></script>

我可以使用className +=,但我知道&lt;code&gt; 标签不会有任何其他类。

【问题讨论】:

  • 为什么不简单地使用 jQuery 并为这些元素添加 css 规则?
  • 你用过搜索引擎吗?
  • @alex - &lt;code&gt; 标记中的 JavaScript 代码无法使用 CSS 设置样式。 @PhistucK-是的,我找到了,但找不到太多,也许我没有按正确的条件进行搜索。我找到了 google-code-prettify (code.google.com/p/google-code-prettify),但需要在 &lt;code&gt; 标签中添加一个类。
  • 但是那些用于 javascript 的 &lt;code&gt; 标记不会以任何方式呈现。那你想做什么?让它们呈现为普通的 html 元素?这里的基本问题是它们在&lt;body&gt; 之外,它仍然可以在现代浏览器中呈现,但具有未定义的行为。不过,您可以编写一个 jQuery 脚本,将这些元素包装在其他元素中。我认为甚至应该可以在 html 中的不同位置剪切和粘贴它们,但是您说您不想这样做。但是,由于上述问题,我怀疑是否存在一个库。
  • 试图理解你写的@alex,但有困难。我想要这样的东西:google-code-prettify.googlecode.com/svn/trunk/README.html

标签: javascript html prettify


【解决方案1】:

您可以很好地使用您自己找到的库 (https://code.google.com/p/google-code-prettify/),并使用您自己的一个小脚本将所需的类添加到每个 &lt;code&gt; 标记中(参见 fiddle):

var myFunction = function()
{
  var elements = document.getElementsByTagName("code");
  for (var i = 0; i < elements.length; i++)
  {
    elements[i].className += "prettyprint";
  }
  window.PR.prettyPrint();
}

请注意,要手动调用 prettyPrint,必须使用正确的范围:window.PR.prettyPrint();

【讨论】:

  • 您只需在添加类之后加载 google-code-prettify JavaScript,就像我在更新的问题中所做的那样
  • 很高兴为您工作@at。可以肯定的是,我仍然建议使用autoload=false 加载代码并调用您的函数,包括调用prettyPrint(),例如body.onload 绝对确保您的代码得到美化。我很确定在某些极端情况下,prettyPrint 或您的脚本会被提前调用。安全总比后悔好。
猜你喜欢
  • 1970-01-01
  • 2018-09-16
  • 2014-12-31
  • 2017-12-21
  • 2018-03-11
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
相关资源
最近更新 更多