layui框架实战案例(24):layedit工具栏添加查看源代码按钮的解决方案

发布于:2023-10-25 ⋅ 阅读:(209) ⋅ 点赞:(0)

layUI框架实战案例系列文章


其他目录



在这里插入图片描述
layedit是一款基于layui框架的富文本编辑器,适用于后台管理系统、博客编辑等场景,提供了很多实用的功能,包括但不限于:

字体、字号、颜色设置,加粗、斜体、下划线、删除线等文字样式设置。
图片、链接、表格、列表插入,源代码、全屏、撤销、重做等操作。
自定义工具栏。

html容器代码

    <div class="layui-form-item">
                            <label for="poi_content" class="layui-form-label">工程信息 <span class="x-red">*</span></label>
                            <div class="layui-input-inline" style="width: 100%;"><textarea name="poi_content" id="poi_content" class="layui-textarea"><p>1</p><p><img src="upload/poi/8_ad_214d2fa823d4d686c04fd41a4a5cff45.png" alt="8_ad_214d2fa823d4d686c04fd41a4a5cff45.png"><br></p></textarea></div>
                            <div class="layui-form-mid layui-word-aux"></div>
                        </div>

富文本编辑

  //编辑器上传图片;
        layedit.set({
            uploadImage: {
                url: '?m=Upload&a=uploadDeal&act=upEdit&fromType=poi&token=' + upToken
                , type: 'post'
            }
        });

        //编辑器
        var index1 = layedit.build('poi_content', {
            tool: ['strong', 'italic', 'underline', 'del', '|', 'left', 'center', 'right', 'link', 'unlink', 'image']
        });
        setHtmlCodeToEdit('poi_content',index1);//设置源码菜单

新增方法:setHtmlCodeToEdit('poi_content',index1);//设置源码菜单

其中poi_content为对应的HTML容器对应的ID

封装调用方法

/************layEdit富文本编辑器 Begin*********/
function setHtmlCodeToEdit(ele, id) {
    $("#" + ele).next().find('div.layui-layedit-tool').append('<span class="layedit-tool-mid"></span>');
    $("#" + ele).next().find('div.layui-layedit-tool').append('<i class="layui-icon layui-icon-code-circle" title="查看源码" style="font-size: 18px!important;" οnclick="getHtml(this,' + id + ')"></i> ');
}

//显示原代码
function getHtml(boj, index) {
    layui.use('layedit', function () {
        var layedit = layui.layedit, $ = layui.jquery;
        var context = layedit.getContent(index);
        if ($(boj).hasClass('layui-icon-code-circle')) {
            $(document.getElementById("LAY_layedit_" + Number(index))).contents().find("body")
                .html(HtmlUtil.htmlEncode(context));
            $(boj).removeClass("layui-icon-code-circle");
            $(boj).addClass("layui-icon-layouts");
            $(boj).attr("title", "查看HTML");
        } else if ($(boj).hasClass('layui-icon-layouts')) {
            $(document.getElementById("LAY_layedit_" + Number(index))).contents().find("body")
                .html(HtmlUtil.htmlDecode(context));
            $(boj).removeClass("layui-icon-layouts");
            $(boj).addClass("layui-icon-code-circle");
            $(boj).attr("title", "查看源码");
        }
    });
}

var HtmlUtil = {
    /*1.用浏览器内部转换器实现html转码*/
    htmlEncode: function (html) {
        //1.首先动态创建一个容器标签元素,如DIV
        var temp = document.createElement("div");
        //2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持)
        (temp.textContent != undefined) ? (temp.textContent = html) : (temp.innerText = html);
        //3.最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了
        var output = temp.innerHTML;
        temp = null;
        return output;
    },
    /*2.用浏览器内部转换器实现html解码*/
    htmlDecode: function (text) {
        //1.首先动态创建一个容器标签元素,如DIV
        var temp = document.createElement("div");
        //2.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持)
        temp.innerHTML = text;
        //3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。
        var output = temp.innerText || temp.textContent;
        temp = null;
        return output;
    }
};

/************layEdit富文本编辑器 End*********/

验证内容

 var poi_content = layedit.getContent(index1);
            if (poi_content.length <= 0) {
                layer.msg("工程信息不能为空", {icon: 2, time: 2000});
                $('#poi_content').focus();
                return false;
            }
           

@漏刻有时

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到