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 相关文章推荐
JS 类型转换常见方法小结
May 31 Javascript
IE6,IE7下js动态加载图片不显示错误
Jul 17 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
Dec 27 Javascript
js中通过父级进行查找定位元素
Jun 15 Javascript
一个检测表单数据的JavaScript实例
Oct 31 Javascript
使用原生JS实现弹出层特效
Dec 22 Javascript
原生javascript实现DIV拖拽并计算重复面积
Jan 02 Javascript
Bootstrap每天必学之标签与徽章
Nov 27 Javascript
深入理解React中es6创建组件this的方法
Aug 29 Javascript
extjs简介_动力节点Java学院整理
Jul 17 Javascript
layui下拉框获取下拉值(select)的例子
Sep 10 Javascript
vue通过过滤器实现数据格式化
Jul 20 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和ACCESS写聊天室(五)
2006/10/09 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
javascript 有用的脚本函数
2009/05/07 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
电大本科自我鉴定
2014/02/05 职场文书
培训专员岗位职责
2014/02/26 职场文书
业务内勤岗位职责
2014/04/30 职场文书
促销活动总结模板
2014/07/01 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
迎新生欢迎词
2015/01/23 职场文书
幼儿教师辞职信
2015/02/27 职场文书
金砖之国观后感
2015/06/11 职场文书
python - asyncio异步编程
2021/04/06 Python
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android