博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC开发Markdown编辑器(2)
阅读量:6258 次
发布时间:2019-06-22

本文共 4940 字,大约阅读时间需要 16 分钟。

<!DOCTYPE html>

MVC开发Markdown编辑器(2)

MVC Markdown


实时预览

我希望实现一个在线实时预览的Markdown编辑器,左边是编辑处,右边是实时预览界面。

准备工作

引入相关js和css

  • 这里我需要引入bootstrap的css 用来做基本的布局
  • jquery以及之前提到过的mdd的js和css
 
  1. <link href="~/Scripts/mdd_styles.css" rel="stylesheet" />
  2. <script src="~/Scripts/jquery-1.10.2.min.js"></script>
  3. <script src="~/Scripts/MarkdownDeepLib.min.js"></script>

由于bootstrap默认在Layout中已经引入,这里就不需要引入了

View代码

 
  1. <div id="markdownDiv" class="row">
  2. <div id="editDiv" class="mdd_modal_frame mdd_editor_wrap col-lg-6">
  3. @Html.TextArea("OrignalText", new { @class = "mdd_modal_content mdd_editor textarea" })
  4. </div>
  5. <div id="renderDiv" class="mdd_modal_frame col-lg-6 ">
  6. <div id="renderContent" class="mdd_modal_content"></div>
  7. </div>
  8. </div>

这里结构很简单最外层一个div 里面2个div一个显示在左,一个显示在右,

因此最外层Div我们设置Class为row让它占满整行,里面两个div都设置为col-lg-6,这样基本的布局就出来了,同时再添加mdd_modal_frame到里面2个子div,这个样式是在mdd_styles.css写好的,它是的div有基本的外框样式

JavaScript代码

 
  1. function markdown(content) {
  2. //Set required options:
  3. // Set options
  4. md.ExtraMode = true;
  5. md.SafeMode = true;
  6. md.MarkdownInHtml = true;
  7. //Transform your text:
  8. var output = md.Transform(content);
  9. return output;
  10. };
  11. function Transform() {
  12. var content = $("#OrignalText").val();
  13. var html = markdown(content);
  14. \(</span><span class="pun">(</span><span class="str">"#renderContent"</span><span class="pun">).</span><span class="pln">html</span><span class="pun">(</span><span class="pln">html</span><span class="pun">);</span></code></li><li class="L4"><code class="language-javascript"><span class="pun">}</span></code></li><li class="L5"><code class="language-javascript"></code></li></ol></pre><blockquote data-anchor-id="1yzk" class="white-blockquote"> <p>通过<code>Transform</code>函数找到需要解析的文本框,将其内容解析并添加到<code>renderContent</code>div中</p> </blockquote><div class="md-section-divider"></div><pre class="prettyprint linenums prettyprinted" data-anchor-id="cpjw"><ol class="linenums"><li class="L0"><code class="language-javascript"><span class="kwd">var</span><span class="pln"> enterOrignal </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="com">//鼠标是否在OrigbanText的上</span></code></li><li class="L1"><code class="language-javascript"><span class="kwd">var</span><span class="pln"> enterRender </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">;</span><span class="com">//鼠标是否在RenderText的上</span></code></li><li class="L2"><code class="language-javascript"><span class="pln">\)(function() {
  15. $("#OrignalText").click(function() {
  16. this.focus();
  17. });
  18. //本文点击是获取焦点
  19. $("#OrignalText").keyup(Transform);
  20. \(</span><span class="pun">(</span><span class="str">"#OrignalText"</span><span class="pun">).</span><span class="pln">scroll</span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span></code></li><li class="L1"><code class="language-javascript"><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">enterOrignal</span><span class="pun">){</span><span class="com">//只有进入OrignalText了才滚动renderContent,</span></code></li><li class="L2"><code class="language-javascript"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> height </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">\)("#renderContent").height() 1.0 / $("#OrignalText").height()) $("#OrignalText").scrollTop();
  21. $("#renderContent").scrollTop(height);
  22. }
  23. });
  24. \(</span><span class="pun">(</span><span class="str">"#renderContent"</span><span class="pun">).</span><span class="pln">scroll</span><span class="pun">(</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span></code></li><li class="L7"><code class="language-javascript"><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">enterRender</span><span class="pun">){</span><span class="com">//只有进入renderContent了才滚动orignal,</span></code></li><li class="L8"><code class="language-javascript"><span class="pln"> </span><span class="kwd">var</span><span class="pln"> height </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">\)("#OrignalText").height() 1.0 / $("#renderContent").height()) $("#renderContent").scrollTop();
  25. $("#OrignalText").scrollTop(height);
  26. }
  27. });
  28. $("#OrignalText").mouseenter(function () {
  29. enterOrignal = true;//鼠标进入则设置为true
  30. });
  31. $("#OrignalText").mouseleave(function () {
  32. enterOrignal = false;//鼠标离开则设置为false
  33. });
  34. $("#renderContent").mouseenter(function () {
  35. enterRender = true;
  36. });
  37. $("#renderContent").mouseleave(function () {
  38. enterRender = false;
  39. });
  40. });
  41. //滚动条同步滚动
  42. });

在页面加载时绑定事件

双向滚动就完成了

转载于:https://www.cnblogs.com/Jack-Blog/p/4547515.html

你可能感兴趣的文章
HQL: Hibernate查询语言
查看>>
SQL优化之六脉神剑
查看>>
java生成随机字符串uuid
查看>>
黄永成-thinkphp讲解-个人博客讲解26集
查看>>
Mongodb(2)创建数据库,删除数据库,创建集合,删除集合,显示文档内容
查看>>
Tomcat禁止显示目录和文件列表
查看>>
linux mmap 详解【转】
查看>>
注释中不允许出现字符串 "--"。
查看>>
client 如何找到正确的RegionServer(HBase -ROOT-和.META.表)
查看>>
协议森林16 小美的桌号(DHCP协议)
查看>>
简单的ajax封装
查看>>
PHP初学者必须掌握的10个知识点
查看>>
[Asp.Net]获取客户端ip和mac地址
查看>>
Arcengine设置坐标系(转载)
查看>>
php字符串操作集锦
查看>>
【WPF】C#代码动态改变控件的样式
查看>>
P1115 最大子段和
查看>>
【翻译自mos文章】检查$ORACLE_HOME是否是RAC的HOME的方法以及relink RAC的Oracle binary的方法...
查看>>
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
查看>>
php max_execution_time执行时间问题
查看>>