首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.md在html中呈现marked.js文件

使用.md在html中呈现marked.js文件
EN

Stack Overflow用户
提问于 2022-06-09 08:42:27
回答 2查看 304关注 0票数 0

我试图在html页面的<body>组件中呈现一个标记文件(<body>)。我偶然发现了marked.js

这些文档介绍了以下用法:

代码语言:javascript
复制
marked.parse('# Marked in the browser\n\nRendered by **marked**.');

这对于我想要做的事情很有效(它以html格式呈现标记)。但是,我希望marked.parse调用中的输入是一个.md文件,这样我就不必在简单的引号屏障之间写入所有内容。

我试过:

代码语言:javascript
复制
marked.parse(src='file.md');

代码语言:javascript
复制
marked.parse('href=file.md');

但这不管用。

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2022-09-03 18:24:49

这里的派对可能有点晚了。不管怎样..。

我正在使用marked.js的平面文件-CMS我正在工作。在那里,我使用PHP将文件内容读取到DOM对象中。

代码语言:javascript
复制
<div class='md'><?= htmlspecialchars(file_get_contents('file.md')); ?></div>

从那里开始,应该像文件所建议的那样直截了当:

代码语言:javascript
复制
<script>
let el = document.getElementsByClassName['md'][0];
el.innerHTML = marked.parse(el.innerHTML);
</script>

或者解析站点上每个“.md”容器的内容:

代码语言:javascript
复制
<script>
Array.from(document.getElementsByClassName['md']).forEach( (el) => {
  el.innerHTML = marked.parse(el.innerHTML);
});
</script>
票数 0
EN

Stack Overflow用户

发布于 2022-09-13 19:04:33

我突然意识到,您可以使用JavaScript fetch API来代替它,并在客户端保留全部内容。

代码语言:javascript
复制
fetch( 'https://example.com/file.md' )
  .then( response => response.text() )
  .then( (result) => {
    var content = marked.parse(result);
    document.querySelector( '#my-container' ).innerHTML = content;
  });

fetch是一个承诺。它从指定的URL抓取文件,并使用标记立即进行解析。(显然,将querySelector更改为选择目标元素。)

另外,当提取出错时,您可能需要添加一些错误处理。如下所示:

代码语言:javascript
复制
...
.then( (response) => {
  if (!response.ok) {
    throw new Error(`HTTP error! Status: ${response.status}`);
  }

  return response.text();
})
...

我强烈建议,调查一下这里的安全问题。根据您要做的事情,您可能无法控制文件的内容。只是JS,但还是…

您可以找到有关fetch API 这里的更多资源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72557262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档