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 Array.prototype.slice使用说明
Oct 11 Javascript
node.js中的buffer.toJSON方法使用说明
Dec 14 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
Mar 09 Javascript
JavaScript的面向对象编程基础
Aug 13 Javascript
解决WordPress使用CDN后博文无法评论的错误
Dec 15 Javascript
jQuery通过ajax快速批量提交表单数据
Oct 25 Javascript
JavaScript利用Date实现简单的倒计时实例
Jan 12 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
Apr 27 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
Jun 12 Javascript
jQuery获取随机颜色的实例代码
May 21 jQuery
JavaScript This指向问题详解
Nov 25 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
Aug 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小偷的核心程序
2007/04/09 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
Python中断言Assertion的一些改进方案
2016/10/27 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
Django 开发环境配置过程详解
2019/07/18 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
Python定义一个函数的方法
2020/06/15 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
入党转预备思想汇报
2014/01/07 职场文书
企业安全生产检查制度
2015/08/06 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
Python基础详解之邮件处理
2021/04/28 Python
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL