markdown.ftl 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0">
  6. <title>markdown文本预览</title>
  7. <#include "*/commonHeader.ftl">
  8. <script src="js/jquery-3.6.1.min.js" type="text/javascript"></script>
  9. <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/>
  10. <script src="bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
  11. <script src="js/marked.min.js" type="text/javascript"></script>
  12. <script src="js/base64.min.js" type="text/javascript"></script>
  13. </head>
  14. <body>
  15. <input hidden id="textData" value="${textData}"/>
  16. <div class="container">
  17. <div class="panel panel-default">
  18. <div id="markdown_btn" class="panel-heading">
  19. <h4 class="panel-title">
  20. <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
  21. ${file.name}
  22. </a>
  23. </h4>
  24. </div>
  25. <div id="text_btn" class="panel-heading">
  26. <h4 class="panel-title">
  27. <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
  28. ${file.name}
  29. </a>
  30. </h4>
  31. </div>
  32. <div class="panel-body">
  33. <div id="markdown"></div>
  34. </div>
  35. </div>
  36. </div>
  37. <script>
  38. /**
  39. * 初始化
  40. */
  41. window.onload = function () {
  42. $("#markdown_btn").hide()
  43. initWaterMark();
  44. loadMarkdown();
  45. }
  46. function htmlEscape(str){
  47. var s = "";
  48. if(str.length == 0) return "";
  49. s = str.replace(/&amp;/g,"&");
  50. s = str.replace(/&amp;amp;/g,"&");
  51. s = s.replace(/&lt;/g,"<");
  52. s = s.replace(/&gt;/g,">");
  53. s = s.replace(/&nbsp;/g," ");
  54. s = s.replace(/&#39;/g,"\'");
  55. s = s.replace(/&quot;/g,"\"");
  56. s = s.replace(/<script.*?>.*?<\/script>/ig, '');
  57. s = s.replace(/<script/gi, "&lt;script ");
  58. s = s.replace(/<iframe/gi, "&lt;iframe ");
  59. return s;
  60. }
  61. /**
  62. * 加载markdown
  63. */
  64. function loadMarkdown() {
  65. var textData = Base64.decode($("#textData").val())
  66. textData = htmlEscape(textData);
  67. window.textPreData = "<pre style='background-color: #FFFFFF;border:none'>" + textData + "</pre>";
  68. window.textMarkdownData = marked.parse(textData);
  69. $("#markdown").html(window.textMarkdownData);
  70. }
  71. $(function () {
  72. $("#markdown_btn").click(function () {
  73. $("#markdown").html(window.textMarkdownData);
  74. $("#text_btn").show()
  75. $("#markdown_btn").hide()
  76. });
  77. $("#text_btn").click(function () {
  78. $("#markdown_btn").show()
  79. $("#text_btn").hide();
  80. $("#markdown").html(window.textPreData);
  81. });
  82. });
  83. </script>
  84. </body>
  85. </html>