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中的undefined,null,&quot;&quot;,0和false
Mar 08 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
Jul 29 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
Aug 01 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
Apr 17 Javascript
jquery对table中各数据的增加、保存、删除操作示例
May 14 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
Jun 17 Javascript
node-http-proxy修改响应结果实例代码
Jun 06 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
Jun 18 Javascript
javascript中使用未定义变量或值的情况分析
Jul 19 Javascript
JavaScript实现替换字符串中最后一个字符的方法
Mar 07 Javascript
js实现音频控制进度条功能
Apr 01 Javascript
node.js的Express服务器基本使用教程
Jan 09 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(二)
2012/03/21 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
js中typeof的用法汇总
2013/12/12 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
vuex的简单使用教程
2018/02/02 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
JS实现百度搜索框关键字推荐
2020/02/17 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
python生成随机密码或随机字符串的方法
2015/07/03 Python
Python之py2exe打包工具详解
2017/06/14 Python
详解如何减少python内存的消耗
2019/08/09 Python
python打造爬虫代理池过程解析
2019/08/15 Python
Python 创建守护进程的示例
2020/09/29 Python
CSS3绘制六边形的简单实现
2016/08/25 HTML / CSS
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
办公室副主任岗位职责
2013/11/25 职场文书
开办饭店创业计划书
2013/12/28 职场文书
英语自我评价范文
2014/01/24 职场文书
销售会计岗位职责
2014/03/15 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
清正廉洁演讲稿
2014/05/22 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫