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 相关文章推荐
jQuery弹出层插件简化版代码下载
Oct 16 Javascript
For循环中分号隔开的3部分的执行顺序探讨
May 27 Javascript
Javascript正则控制文本框只能输入整数或浮点数
Sep 02 Javascript
JavaScript实现简单图片翻转的方法
Apr 17 Javascript
jQuery弹出层插件Lightbox_me使用指南
Apr 21 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
Dec 14 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
Dec 14 Javascript
Javascript防止图片拉伸的自适应处理方法
Dec 26 Javascript
vue.js实现带日期星期的数字时钟功能示例
Aug 28 Javascript
使用javascript做时间倒数读秒功能的实例
Jan 23 Javascript
微信小程序tabBar设置实例解析
Nov 14 Javascript
angular *Ngif else用法详解
Dec 15 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使用json-schema模块实现json校验示例
2019/09/28 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
Javascript 跨域访问解决方案
2009/02/14 Javascript
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
js post提交调用方法
2014/02/12 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
安装python及pycharm的教程图解
2019/10/10 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
个人简历自我评价八例
2013/10/31 职场文书
职专应届生求职信
2013/11/16 职场文书
日语专业毕业生求职信
2013/12/04 职场文书
英文自荐信范文
2015/03/25 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
Promise静态四兄弟实现示例详解
2022/07/07 Javascript
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python