用js將markdown轉爲html(僅圖片和超鏈接)

先上效果圖

初始界面
初始界面選擇文件
左爲markdown,右爲html點擊下載
下載到本地

大致思路

  1. 上傳文件
    使用input type中的file
  2. 顯示markdown文件內容
    使用FileReader對象提取,用innerHTML顯示
  3. 轉換並顯示html
    使用replace()轉換,再用innerHTML顯示轉換內容
  4. 下載到本地
    轉換成blob地址,生成鏈接,給按鈕加點擊事件
    部分代碼來源
    http://www.zhangxinxu.com/wordpress/2017/07/js-text-string-download-as-html-json-file/

此方法中文會出現亂碼

上代碼

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Page Title</title>
    <style>
        #file{
            border: 1px solid black;
            padding: 2px;
            position: absolute;
            top: 250px;
            left:43%;
        }
        #download{
            position: absolute;
            top: 350px;
            left:43%;
        }
        #read{
            border: 1px solid black;
            position: absolute;
            top: 20px;
            left: 20px;
            width: 40%;
            height: 700px;
            overflow: scroll;
        }
        #finish{
            border: 1px solid black;
            position: absolute;
            top: 20px;
            right: 20px;
            width: 40%;
            height: 700px;
            overflow: scroll;
        }
    </style>
</head>
<body>
    <input type="file" id="file" onchange="change()">
    <input type = "button" id = "download" value = "下載html" href = "">
    <div id = "read">
    </div>
    <div id = "finish">
    </div>
    <script>
        var read = document.getElementById("read");  
        var file = document.getElementById("file");
        var oChange = document.getElementById("change");  
        var oFinish = document.getElementById("finish");  
        var oDownload = document.getElementById("download");
        var funDownload = function (content, filename) {
        // 創建隱藏的可下載鏈接
        var eleLink = document.createElement('a');
        eleLink.download = filename;
        eleLink.style.display = 'none';
        // 字符內容轉變成blob地址
        var blob = new Blob([content]);   
        eleLink.href = URL.createObjectURL(blob);
        // 觸發點擊
        document.body.appendChild(eleLink);
        eleLink.click();
        // 然後移除
        document.body.removeChild(eleLink);
        }                  
        function change(){  
            var reader = new FileReader();   
            reader.readAsText(file.files[0]); 
            reader.onload = function(){ 
                read.innerHTML=this.result; 
                var change1 = this.result.replace(/\!(\[.*\])\((.+)\)/g, "<img src=\"" + "$2" + "\" />"); 
                var change2 = change1.replace(/\[(.*)\]\((.+)\)/g, "<a href=\"" + "$2" + " \" >" + "$1" + "<a />");
                finish.innerHTML = change2; 
                download.onclick = function () {
                    funDownload(finish.innerHTML, 'test.html');	
                }
            }
        }
    </script>
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章