【问题标题】:How to present a pretty printed Java source located outside the HTML file?如何呈现位于 HTML 文件之外的漂亮打印的 Java 源代码?
【发布时间】:2013-09-09 11:30:40
【问题描述】:

我正在考虑为 Java 概念编写教程,如果我可以将教程编写为带有漂亮印刷 Java 源代码的 HTML 文档,那就太好了。

我知道我可以这样做,例如http://code.google.com/p/google-code-prettify/ 如果我将各种 Java 源代码复制到我希望它们所在的 HTML 文档中,并在周围的标记上放置一个样式类。

但是,为了确保 sn-ps 是最新的,我真的希望 HTML 页面引用实际的 Java 源文件,而不是手动维护的副本。

据我了解-这可能是错误的-Google Prettyprint 库不直接支持此功能,但可能是 Javascript 将文件拉入文件并将其放入<pre> 标记内的 DOM 树中的一些技巧可以做到吗?我希望 HTML 文件存在于本地文件系统中,因此不能选择执行服务器端脚本。

我的问题是 - 我该怎么做?

(我打算将 HTML 文件物理放置在源代码树的根目录。这意味着从 HTML 到 Java 源代码的所有引用都是相对的,并且没有“..”。我不知道这是否重要或不是。)

【问题讨论】:

  • 你好托尔比约恩。你在这方面有什么进展吗?

标签: java javascript html pretty-print


【解决方案1】:

无法直接使用 JavaScript 访问文件。出于明显的安全原因,JavaScript 以这种方式受到限制。

您将需要您的网络服务器来提供 Java 文件。您不需要编写服务器端脚本,但您的 Java 文件的内容必须在某个网址上可用。如果是,您可以使用 AJAX 加载 Java 文件的内容并将内容插入到您的网页中。

使用jQuery加载文本可以如下完成

$.get('java/somefile.java', function(data) {
  $('#sourceCodeDestination').html(data);
  // Prettyprint neeeds to run again in order to see the newly added code
  prettyPrint();
}, "text");

这将加载 url java/somefile.java 以纯文本形式获取其内容并将其插入 id 为 sourceCodeDestination 的 DOM 元素中。有关更多信息,请参阅 get() 和 ajax() 上的 jQuery 文档。

这里是a demo。如您所见,它从 CDN 加载精简版 Prettyprint 源代码并漂亮地打印出来。

【讨论】:

  • 您是否有工作代码用于使用 AJAX 加载 Java 文件的内容并将内容插入我的网页?
  • 我已经用代码更新了我的答案。我建议你使用 jQuery,因为它使 AJAX 请求更简单,而且听起来你没有使用 AJAX 的经验。
【解决方案2】:

如果您的用户在阅读您的文档时可以接受在线访问的要求,您可以将代码托管在 gist (https://gist.github.com/) 之类的地方,并将其嵌入到您的 html 文档中(参见示例,将其放入您的文档中 @987654322 @)

【讨论】:

  • 我不明白你的评论。我对 Internet 上需要的任何魔法所需的 javascript 都很好。它是 HTML 文件旁边的文件系统中存在的 Java 源代码。
  • 我的意思是把你的java代码放在github上,而不是让它离线。静态 html 文件无法从文件系统中读取
【解决方案3】:

假设 prettify.js 之前已加载,您可以调用 函数 prettyPrint 接受参数 callback 和 rootNode。

<div id="foo">
    <pre id="bar"></pre>
</div>
var pre = document.getElementById('bar');
pre.textContent = 'function () {\n    return;\n}'; // assign code
pre.className = 'prettyprint';                     // assign class
prettyPrint(null, document.getElementById('foo')); // prettify

DEMO

【讨论】:

  • 如果我正确理解您的代码,美化的源代码放在 Javascript sn-p 内,而不是位于 HTML 页面之外。你有一个解决方案,它位于 HTML 页面之外的文件中吗?
  • 正如另一个答案中提到的,您将使用 Ajax 将文件加载到元素中,然后在其上运行 prettyPrint()。 w3schools 或 thenewboston 有一个 ajax 基础教程
  • @ThorbjørnRavnAndersen 这将问题从漂亮打印更改为导入文件,(如果您传递相同的来源)使用 XMLHttpRequest 很容易。
  • @PaulS。如何重新表述我的问题,以更清楚地说明我需要从文件系统中提取一个外部文件并漂亮地打印出来?
  • 那你问了2个问题; 1 我如何使用 JavaScript 加载文本文件,2 我如何才能打印它?这个答案回答了2,因为1 使用XMLHttpRequest。如果你使用file:// 协议,你会因为安全协议而遇到问题;所以最好使用http:,即服务器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
相关资源
最近更新 更多