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做flash做的事..才完成的一个类.Auntion Action var 0.1
Feb 23 Javascript
JS:window.onload的使用介绍
Nov 13 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
Mar 13 Javascript
jQuery内部原理和实现方式浅析
Feb 03 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
Jul 21 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
May 25 Javascript
全面了解javascript中的错误处理机制
Jul 18 Javascript
前端 Vue.js 和 MVVM 详细介绍
Dec 29 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
Feb 17 Javascript
Javascript继承机制详解
May 30 Javascript
使用validate.js实现表单数据提交前的验证方法
Sep 04 Javascript
js的新生代垃圾回收知识点总结
Aug 22 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
Apache设置虚拟WEB
2006/10/09 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
vue axios 二次封装的示例代码
2017/12/08 Javascript
详解vue表单——小白速看
2018/04/08 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
python3爬取各类天气信息
2018/02/24 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
后勤工作职责
2013/12/22 职场文书
初中英语教学反思
2014/01/25 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
投标服务承诺书
2014/05/28 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python