【问题标题】:How to use PageDown Markdown editor?如何使用 PageDown Markdown 编辑器?
【发布时间】:2012-10-22 14:15:38
【问题描述】:

我想让用户能够实时预览使用 Markdown 创建的笔记。但是我在该项目中找不到任何下载。

如何开始使用PageDown Markdown 编辑器?

【问题讨论】:

    标签: markdown pagedown


    【解决方案1】:

    PageDown 的文档非常混乱。我将尝试在这里创建一个更易于使用的示例。

    必要的位

    JS

    <script src="//cdnjs.cloudflare.com/ajax/libs/pagedown/1.0/Markdown.Converter.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/pagedown/1.0/Markdown.Editor.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/pagedown/1.0/Markdown.Sanitizer.js"></script>
    

    您也可以使用来自 CDNjs 的 .min.js 版本

    CSS

    <link rel="stylesheet" 
          href="//cdn.rawgit.com/balpha/pagedown/master/demo/browser/demo.css" />
    
    <style>
        .wmd-button > span {
            background-image: 
              url('//cdn.rawgit.com/derobins/wmd/master/images/wmd-buttons.png');
            background-repeat: no-repeat;
            background-position: 0px 0px;
            width: 20px;
            height: 20px;
            display: inline-block;
        }
    </style>
    

    您可能不想直接依赖源代码控制文件进行生产使用,但它可以在紧要关头工作。

    HTML

    PageDown 编辑器对页面上存在的 html 有几个期望。

    <div id="wmd-button-bar"></div>
    
    <textarea id="wmd-input" class="wmd-input"></textarea>
    
    <div id="wmd-preview" class="wmd-panel wmd-preview"></div>
    

    脚本

    <script>
        var converter = Markdown.getSanitizingConverter();
        var editor = new Markdown.Editor(converter);
        editor.run();
    </script>
    

    这应该可以让您启动并运行。有关如何操作图像插入、多个编辑器或添加您自己的自定义插件的更多高级信息,请参阅original documentation


    补充说明

    如果您有预先存在的 Markdown 文本,例如您正在使用编辑器来编辑现有页面,您只需在文本区域中插入 Markdown 内容即可。请注意,如果您执行以下操作:

    <textarea id="wmd-input" class="wmd-input">
        @Model.Markdown
    </textarea>
    

    textarea 标记内的空格将被视为 Markdown 并按此处理,这可能会导致意外行为。 (字面上发生在我身上,因为我想知道为什么我要对应该是 p 标签的代码进行格式化)

    确保将元素定义为:

    <textarea id="wmd-input" class="wmd-input">
    @Model.Markdown
    </textarea>
    

    注意没有任何缩进。

    H4-H6 使用情况。

    如果您希望将#### H4 转换为&lt;h4&gt;H4&lt;/h4&gt;,则需要修改Markdown.Sanitizer.js 中的basic_tag_whitelist 变量

    如果你想支持 Header 按钮有更多的 H1 和 H2,比如 H1-H4 看看我的要点:https://gist.github.com/dotnetchris/0f68c879082343295503 尽我所能告诉除了直接修改之外没有其他方法支持commandProto.doHeading 方法。在这个具体的要点中,我将标题重新调整为从 H4 开始,它可以很容易地修改为从 H6 开始。

    【讨论】:

    • 谢谢,这真的很有帮助。我不知道自您的帖子以来是否发生了变化,但我需要将 new Markdown.getSanitizingConverter 替换为 Markdown.getSanitizingConverter 才能正常工作。
    • @tim 可能是复制粘贴错误,我会删除那个新的
    • 您好,请您解释一下下面的内容。如果您有预先存在的 Markdown 文本,例如您正在展示编辑器来编辑现有页面,您需要做的就是在 textarea 中插入 Markdown 内容。请注意,如果您执行以下操作: textarea 标签内的空格将被视为 Markdown 和这样处理可能会导致意外行为。
    • @Mahahari 你只需要确保你没有在现有的降价文本前面添加空格。我要指出的是,如果您对模型数据进行制表符/缩进,实际上您将更改您的降价,并且它会被搞砸。但是,您将降价文本放入文本区域,只需确保您没有任何前导空格
    • 这是一个基于@ChrisMarisic 回复的示例:jsfiddle.net/hansvonn/4qkoth4f
    【解决方案2】:

    我创建了两个编辑器。第一个输入被清理,第二个没有被清理。

    .pagedown { width: 400px; }
    .wmd-button, .wmd-spacer { display: none; }
    .wmd-input { width: 400px; height: 100px; }
    .wmd-preview { margin-bottom: 40px; background-color: #eef;}
    <script src="//cdnjs.cloudflare.com/ajax/libs/pagedown/1.0/Markdown.Converter.js"
    > </script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/pagedown/1.0/Markdown.Editor.js">
    > </script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/pagedown/1.0/Markdown.Sanitizer.js"
    > </script>
    <div class="pagedown">
        <div id="wmd-button-bar-first" class="wmd-button-bar"></div>
            <textarea id="wmd-input-first" class="wmd-input">
    **first editor**
    
    the *input* is sanitized:
    
    <marquee>PageDown!</marquee>
            </textarea>
            <div id="wmd-preview-first" class="wmd-preview"></div>
         </div>
    
         <div class="pagedown">
         <div id="wmd-button-bar-second" class="wmd-button-bar"></div>
         <textarea id="wmd-input-second" class="wmd-input">
    **second editor**
    
    the *input* is NOT sanitized:
    
    <marquee>PageDown!</marquee>
    </textarea>
          <div id="wmd-preview-second" class="wmd-preview"></div>
          </div>
    
    <script type="text/javascript">
        var converter1 = Markdown.getSanitizingConverter();
        var editor1 = new Markdown.Editor(converter1, '-first');
        editor1.run();
        
        var converter2 = new Markdown.Converter();
        var editor2 = new Markdown.Editor(converter2, '-second');
        editor2.run();
    </script>

    【讨论】:

    • 这非常有用。我用它创建了一个minimal JSFiddle demo
    • 代码块有问题。
    • @PSKP 有什么问题?
    • ``` 代码语言不工作的代码块。语言名称已添加到代码中。
    • @PSKP 三个反引号在原始 Markdown 语法中不受支持:daringfireball.net/projects/markdown/syntax。块代码应在行首使用 4 个空格,内联代码应使用反引号(`)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2016-12-13
    相关资源
    最近更新 更多