如何使用CKEditor从HTML获取RTF?

时间:2014-09-01 17:48:55

标签: javascript html ckeditor rtf

我有一个非常好的多个CKEditor textareas结构,当点击 submit 按钮时,我让用户从JavaScript prompt复制/粘贴HTML。

但是,我想要RTF而不是HTML。我需要另一个JavaScript插件,还是可以使用CKEditor完成?

<小时/> 这是我的代码:

<!DOCTYPE html>
<html>
    <head>
        <title>CKEditor Test</title>

        <style type="text/css">
                .container {
                        margin-left: 30%;
                }
        </style>
    </head>
    <body>
    <div class="container">
            <form>
                <textarea class="ckeditor" name="ckeditor1">
                </textarea>
                <input type="submit" value="submit" />
            </form>

            <form>
                <textarea class="ckeditor" name="ckeditor2">
                </textarea>
                <input type="submit" value="submit" />
            </form>

            <form>
                <textarea class="ckeditor" name="ckeditor3">
                </textarea>
                <input type="submit" value="submit" />
            </form>
    </div>
    <script src="ckeditor_4.4.4_basic\ckeditor\ckeditor.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script type="text/javascript">
        $(".ckeditor").each(function() {
            CKEDITOR.replace($(this).attr("name"));
            CKEDITOR.config.width = 500;
        });

        $("form").submit(function(e) {
            e.preventDefault();

            var textarea = $(this).find("textarea:first");
            var name = $(textarea).attr("name");

            // forcing the textarea to update:
            CKEDITOR.instances[name].updateElement();

            var text = textarea.html();
            window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
        });
    </script>
    </body>
</html>


......看起来像什么: multiple textareas with CKEditor


...以及一些示例HTML输出(来自上面屏幕截图中的文字):

&lt;p&gt;some top-level text&lt;/p&gt;&lt;ul&gt;&lt;li&gt;a sub-item&lt;/li&gt;&lt;li&gt;another sub-item&lt;/li&gt;&lt;/ul&gt;



注意:我使用the basic version of CKEditor,并在 config.js中禁用了此行的一些按钮:

config.removeButtons = 'Cut,Copy,Paste,Undo,Redo,Anchor,Underline,Strike,Subscript,Superscript,Link,Unlink,About';

1 个答案:

答案 0 :(得分:0)

可以使用CKEditor完成。我们的想法是在编辑后将CKEditor生成的HTML转换为RTF。可以在这里找到灵魂:https://stackoverflow.com/a/155112/4776207

我承认,有两个缺点,但在你的情况下它仍然是一个非常充分的解决方案。

  1. 解决方案是在C#但是如果您猜测,即使没有C#知识,转换为JS也相当微不足道 result = System.Text.RegularExpressions.Regex.Replace(result, @"<( )*br( )*>", "\r", System.Text.RegularExpressions.RegexOptions.IgnoreCase); 转换为 result = result.replace(/<( )*br( )*>/gi, "\r"); 因此,只需几分钟就可以将函数转换为JS。

  2. 正则表达式,可能不适合处理HTML,确定,用于您的用例,需要能够处理非常有限的一组html标记,它足够强大。你甚至可以放弃大部分转换功能。