JS加载解析Markdown文档过程详解


Posted in Javascript onMay 19, 2020

网上有很多网站会通过.md文档来做页面内容,很好奇,这是怎么做的?

出于好奇,建了一个test.md文件:

# Hello World! 
asdfa 
asd 
*斜体文本* 
**粗体文本** 
***斜粗体文本*** 
分隔线(如下) 
***
* * *
****
- - -
-----------
GOOGLE.COM 
~~删除线~~ 
<u>下划线</u>

JS加载解析Markdown文档过程详解

用浏览器打开之后,结果就被原封不动的输出来了,浏览器根本不会解析这玩意... 跟阮老师的blog相差好大啊~呵呵~还是太天真了!

然后,发现:

JS加载解析Markdown文档过程详解

原来markdown文本还是需要用marked.js这么一个库来解析的!于是乎,依葫芦画个瓢

<!doctype html>
<html>
<head>
 <meta charset="utf-8"/>
 <title>md文档内容转成html显示</title>
</head>
<body>
 <div id="content" style="width: 500px;height: 500px;overflow: auto"></div>
 <div style="margin-top: 30px">
   <form name="form" action="" method="post">
    <select name="q">
      <option value="md/gs.md">公式</option>
      <option value="md/test.md">第一个Markdown文档</option>
    </select>
    <input type="button" value="显示" onclick="showMarkdown()">
  </form>
 </div>
 <script type="text/javascript" src='https://cdn.jsdelivr.net/npm/marked/marked.min.js'></script>
 <script type="text/javascript">
   function showMarkdown() {
     var f = form;
     var xmlhttp;
     if (window.XMLHttpRequest) {
       xmlhttp = new XMLHttpRequest();
     } else {
       xmlhttp = new ActiveXObject('Microsoft.XMLHttp');
     }

     xmlhttp.onreadystatechange = function() {
       if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
         document.getElementById('content').innerHTML = marked(xmlhttp.responseText);
       }
     }

     // 向服务器发送请求
     xmlhttp.open('GET', f.q.value, true);
     xmlhttp.send();
   }
 </script>
</body>
</html>

于是就有了下面的样子:

JS加载解析Markdown文档过程详解

原理就是用ajax请求,取到 .md文件里的内容,再通过marked.js提供的marked()方法将markdown语法的文本转成html文档。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 特性检测并非浏览器检测
Jan 15 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
Dec 10 Javascript
innerHTML在IE中报错解决方案
Dec 15 Javascript
JavaScript深度复制(deep clone)的实现方法
Feb 19 Javascript
浅谈jQuery 选择器和dom操作
Jun 07 Javascript
js实现无缝滚动图
Feb 22 Javascript
微信禁止下拉查看URL的处理方法
Sep 28 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
记React connect的几种写法(小结)
Sep 18 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
Mar 19 Javascript
Vue使用虚拟dom进行渲染view的方法
Dec 26 Javascript
游戏开发中如何使用CocosCreator进行音效处理
Apr 14 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
May 19 #Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
May 19 #jQuery
jQuery AJAX应用实例总结
May 19 #jQuery
单线程JavaScript实现异步过程详解
May 19 #Javascript
vue相关配置文件详解及多环境配置详细步骤
May 19 #Javascript
JS使用for in有序获取对象数据
May 19 #Javascript
基于js实现数组相邻元素上移下移
May 19 #Javascript
You might like
php抓取https的内容的代码
2010/04/06 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
sails框架的学习指南
2014/12/22 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
Python常用列表数据结构小结
2014/08/06 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
python调用webservice接口的实现
2019/07/12 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
python 实现aes256加密
2020/11/27 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
美国美妆网站:B-Glowing
2016/10/12 全球购物
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
会计电算化应届生求职信
2013/11/03 职场文书
毕业求职自荐信格式是什么
2013/11/19 职场文书
小学教师师德演讲稿
2014/05/06 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
伏羲庙导游词
2015/02/09 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
解决Redis启动警告问题
2022/02/24 Redis
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android