根据网上的方法尝试,虽然还不是自己想要的结果,尤其是列表项,但至少能正常显示 md 文件内容了。
主要分为二部分:
第一:html 布局
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| /** * 列表项 */ <form name="form" action="" method="post"> <select name="q"> <option value="../md/测试.md">测试1</option> <option value="../md/还是测试.md">测试2</option> </select> <input type="button" value="显示" onclick="showMarkdown()"> </form>
/** * 内容的容器 */ <div id="content"></div>
|
第二:解析 md 文件内容为 html 显示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
<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) { if (xmlhttp.status == 0 || xmlhttp.status == 200) { document.getElementById("content").innerHTML = marked(xmlhttp.responseText); }else{ alert("status: " + xmlhttp.status); } } } xmlhttp.open("GET", f.q.value, true); xmlhttp.send(); } </script>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
在这里出现了个问题,因为是本地调试,也就是 file:/// 。如果都跑通了,获取到的文件内容一直为空,可在谷歌浏览器中 F12,在 Console 里看是否有报错,比如 CORS 跨域问题。
貌似是因为访问本地文件会有安全问题,所以被限制了。这个问题还没有深入研究,因为有自己的服务器,在服务器上就没问题了。