富文本编辑器summernote的基本使用

summernote比较突出的优点就是能保持复制过来的东西的原有样式,并且比较流畅。

官网地址
中文文档
源码下载地址
Summernote依赖于jquery和bootstrap3/4 所以用时记得引入这俩依赖
引入方法

<!-- include libraries(jQuery, bootstrap) -->
<!-- 插件引入 -->
        <link href="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.9/summernote.css" rel="stylesheet">
        <script src="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.js"></script>
        <script src="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.9/summernote.js"></script>
        <!--引入中文JS包-->
        <script src="https://cdn.bootcss.com/summernote/0.8.10/lang/summernote-zh-CN.js"></script>  //因为这个插件是国外的写的,一定要引入这个中文包,不然编辑器是默认的英文
HTML

简单的例子:
HTML

	<!--方法一-->
    <div id="summernote"></div>   //内容载体
	
	<!--方法二-->
<body>
    <div id="summernote" style="width:100px;height:100px;"><p>Hello Summernote</p></div>
  <script>
    $(document).ready(function() {
        $('#summernote').summernote();
    });
  </script>
</body>

js

//        编辑器功能=====================================
         $("#summernote").summernote({
             lang : 'zh-CN',// 语言
            height : , // 高度
            minHeight : , // 最小高度
            placeholder : '请输入文章内容', // 提示
            // summernote自定义配置
            toolbar: [
              ['operate', ['undo','redo']],
              ['magic',['style']],
              ['style', ['bold', 'italic', 'underline', 'clear']],
              ['para', ['height','fontsize','ul', 'ol', 'paragraph']],
              ['font', ['strikethrough', 'superscript', 'subscript']],
              ['color', ['color']],
              ['insert',['picture','video','link','table','hr']],
              ['layout',['fullscreen','codeview']],
            ],
            callbacks : { // 回调函数
                // 上传图片时使用的回调函数   因为我们input选择的本地图片是二进制图片,需要把二进制图片上传服务器,服务器再返回图片url,就需要用到callback这个回调函数
                onImageUpload : function(files) {
                    var form=new FormData();
                        form.append('myFileName',files[])  //myFileName 是上传的参数名,一定不能写错
                    $.ajax({
                        type:"post",
                        url:"${path}/Img/upload", //上传服务器地址
                        dataType:'json',
                        data:form,
                        processData : false,
                           contentType : false,
                           cache : false,
                           success:function(data){
                            console.log(data.data)
                              $('#summernote').summernote('editor.insertImage',data.data);
                           }
                    })
                }
            }
        });

注意:

$('#summernote').summernote('insertImage', url, filename); 
官方文档提供的图片插入封装函数,在本地环境下服务器返回的url并不能展示在编辑框内,所以不要怀疑这个函数的作用,当你放到生产环境的时候自然会展示在编辑框内,这个问题我花了一个下午才证明,希望不要再踩坑

summernote取值和赋值

取值:
$('#summernote').summernote('code')

赋值:
$('#summernote').summernote('code', this.richContent)

判断内容是否为空:
var isEmpty = $("#user-work-content").summernote('isEmpty');

今天想做个富文本编辑器器的字数提示功能

var text=$('#summernote').summernote('code');
拿到的值,里面带p标签,还有空格,换行标签什么的,很难统计出富文本的实际文本的长度,于是查了一篇文章

summernote文本编辑器使用(含概要内容提取)
这篇文章,提供了如何将原始文本,转化成干净的文本(不含各种标签,空格符什么的),下面单独将这块代码沾出来

function getNoMarkupStr(markupStr) {
         /* markupStr 源码</> */
         //console.log(markupStr);
         var noMarkupStr=$("<div>").html(markupStr).text();/* 得到可视文本(不含图片),将&nbsp;&lt;&gt;转为空字符串和<和>显示,同时去掉了换行,文本单行显示 */
         //console.log("1--S" + noMarkupStr + "E--");
         noMarkupStr=noMarkupStr.replace(/(\r\n|\n|\r)/gm,"");/* 去掉可视文本中的换行,(没有用,上一步已经自动处理) */
         //console.log("2--S" + noMarkupStr + "E--");
         noMarkupStr=noMarkupStr.replace(/^\s+/g,"");/* 替换开始位置一个或多个空格为一个空字符串 */
         //console.log("3--S" + noMarkupStr + "E--");
         noMarkupStr=noMarkupStr.replace(/\s+$/g,"");/* 替换结束位置一个或多个空格为一个空字符串 */
         //console.log("4--S" + noMarkupStr + "E--");
         noMarkupStr=noMarkupStr.replace(/\s+/g," ");/* 替换中间位置一个或多个空格为一个空格 */
         //console.log("5--S" + noMarkupStr + "E--");
         return noMarkupStr;
}

将获取到的原始文本,传入,然后返回的就是干净的文本,于是就好统计实际文本的长度了

使用summernote
1.summernote使用的js代码

var preview = function(params){
        layer.open({
            title:"预览",
            content: $(".note-editable").html(),
            area: ['900px', '500px'],
        });
    }
    var previewCallback = function(params){
        //console.info(params);
    }
    var previewButton = function (context) {
        var ui = $.summernote.ui;
        // create button
        var button = ui.button({
            contents: '<i class="fa fa-search"/>',  //按钮样式
            tooltip: '预览',
            click: function (params) {
                preview(params);// 这里是我自己的点出时触发的事件
            },
            callback:function(params){
                previewCallback(params);// 这里的回调函数会在加载页面的时候直接执行
            }
        });
        return button.render();//按钮渲染
    }
    $('.summernote').summernote({
        fontNames: ['Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Georgia', 'Georgia2', 'Merriweather'],
        fontNamesIgnoreCheck:['Georgia'],
        height : 400,
        lang : 'zh-CN',
        callbacks: {
            onImageUpload: function (files) {
                sendFile(files[0], this);
            }
        },
        toolbar: [
            ['style', ['style']],
            ['font', ['bold', 'italic', 'underline', 'clear', 'strikethrough', 'subscript', 'superscript']],
            ['fontsize',['fontsize']],
            ['fontname', ['fontname']],
            ['color', ['color']],
            ['para', ['ul', 'ol', 'paragraph']],
            ['height', ['height']],
            ['insert', ['table', 'link', 'picture', 'video', 'hr']],
            ['view', ['fullscreen', 'codeview', 'help', 'preview']],
        ],
        buttons: {
            preview: previewButton//自已定义的按钮函数
        },
    });

    $('.note-editable').css('font-family','Georgia2');

2.上传文件js代码

//上传文件
function sendFile(file, obj) {
    var data = new FormData();
    var ctx = [[@{/}]] + "summernote/content";
    data.append("file", file);
    $.ajax({
        type: "POST",
        url: ctx + "/file/upload",
        data: data,
        cache: false,
        contentType: false,
        processData: false,
        dataType: 'json',
        success: function(result) {
            if (result.code == web_status.SUCCESS) {
                $(obj).summernote('editor.insertImage', result.fileName, result.fileName);
            } else {
                $.modal.alertError(result.msg);
            }
        },
        error: function(error) {
            $.modal.alertWarning("图片上传失败。");
        }
    });
}

3.获取富文本编辑器里的值

var markupHTML = $('.summernote').summernote('code');
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Summernote是一个基于JavaScript的富文本编辑器,它提供了一种简单而强大的方式来在网页上创建和编辑富文本内容。下面是使用Summernote基本步骤: 1. 引入Summernote库:在HTML文件中引入Summernote的CSS和JavaScript文件。你可以从Summernote的官方网站上下载最新版本的文件,然后将它们添加到你的项目中。 2. 创建一个文本编辑区域:在HTML文件中创建一个textarea元素,用于显示和编辑富文本内容。给textarea元素添加一个唯一的id属性,以便在后续的JavaScript代码中使用。 3. 初始化Summernote使用JavaScript代码初始化Summernote编辑器。通过选择器选择你之前创建的textarea元素,并调用summernote()方法来初始化它。例如,如果你的textarea元素的id为"myEditor",那么初始化代码可以是: ```javascript $(document).ready(function() { $('#myEditor').summernote(); }); ``` 4. 自定义配置:你可以根据需要自定义Summernote的配置选项。例如,你可以设置编辑器的高度、语言、字体等。具体的配置选项可以参考Summernote的官方文档。 5. 获取和设置内容:你可以使用JavaScript代码来获取和设置Summernote编辑器中的内容。例如,使用.val()方法获取编辑器中的内容: ```javascript var content = $('#myEditor').summernote('code'); ``` 使用.html()方法设置编辑器中的内容: ```javascript $('#myEditor').summernote('code', '<p>这是新的内容</p>'); ``` 6. 其他功能:Summernote还提供了许多其他功能,如插入图片、链接、表格等。你可以在官方文档中找到更多关于这些功能的详细信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值