0

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

我知道如果我将各种 Java 源代码复制到我希望它们所在的 HTML 文档中并在周围的标签。

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

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

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

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

4

3 回答 3

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");

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

这是一个演示。如您所见,它从 CDN 加载 Prettyprint 源代码的缩小版本并漂亮地打印出来。

于 2013-09-09T11:41:25.440 回答
0

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

于 2013-09-09T11:38:20.860 回答
0

假设prettify.js之前已加载,您可以调用带有参数callbackrootNode的函数prettyPrint

<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

演示

于 2013-09-09T11:47:22.970 回答