基于jQuery实现富文本的拖拽和修改大小

1,014 阅读1分钟

实现功能

实现富文本编辑器在定义区域内可以拖拽和调整其大小,编辑完成后可将内容生成图片。 由于系统较陈旧,所以选择的是基于jQuery的插件实现。

相关插件

具体实现

实现原理是使用jQuery UI的Draggable和Resizable的特性实现富文本的拖拽和修改大小,使用html2canvas实现将DOM节点转成图片。

如果不需要jQuery UI的全部功能,可以只选择需要的功能进行下载,这样能减少引入文件的大小。

<div id="preview">
    <div id="editor"></div>
    <button id="btnPreview">生成图片</button>
    <img id="previewImg" />
</div>
// 初始化富文本编辑器
var E = window.wangEditor;
var editor = new E('#editor');
editor.create();
     
// 插入编辑器底下的操作栏,可进行编辑器drag和resize的操作
$('#editor').append(`<div class="tool">
    <span class="drag"></span>
    <embed src="./drag.svg"/>
    <embed src="./resize.svg"/>
</div>`);
        
$("#editor").draggable({ handle: '.drag', containment: "#preview" });
$("#editor").resizable({ containment: "#preview" });

// 点击按钮将编辑的内容生成图片
$("#btnPreview").click(function () {
    // 隐藏编辑器工具栏
    $(".w-e-text-container").css('border', 'none');
    $('.tool').hide();
    $('.w-e-toolbar').css('visibility', 'hidden');

    html2canvas($("#preview"), {
        allowTaint: false,
        taintTest : false,
        logging: true,
        onrendered: function (canvas) {
            var dataUrl = canvas.toDataURL();
            $("#previewImg").attr('src', dataUrl)
            $(".w-e-text-container").css('border', '1px solid #ccc');
            $('.tool').show();
            $('.w-e-toolbar').css('visibility', 'visible');
        }
    });
});	

参考

关于html2canvas生成图片的坑,这篇文章讲得很详细了:一次 H5 「保存页面为图片」 的踩坑之旅