zoukankan      html  css  js  c++  java
  • ueditor(1.4.3.2)提取单图上传功能

    参照网络上流行的提取单图上传功能的方法并加以修改,主要通过创建提取的通用上传图片的js文件(custom.js)和简单修改UEditor的ueditor.all.js文件。

    1)在自定义js custom.js中添加方法

    var _editor = UE.getEditor('editor_img', {toolbars: [['simpleupload']]});
    _editor.ready(function () {
        //设置编辑器不可用
        //_editor.setDisabled();  这个地方要注意 一定要屏蔽
        //隐藏编辑器,因为不会用到这个编辑器实例,所以要隐藏
        //_editor.hide();
        //侦听图片上传
        _editor.addListener('contentChange', function (editor) {
            //获取编辑器中的内容(html 代码)
            var img = UE.getEditor('editor_img').getPlainTxt();
            if (img.replace(/[
    ]/g, "") != "") {
                //判断是否是单图片上传,如果是单传不做任何处理,等待回调函数再次调用。
                if (img.indexOf("loadingclass") == -1) {
                    //清空编辑器中的内容,以便下一次添加图片。
                    UE.getEditor('editor_img').execCommand('cleardoc');
                    //调用callbackImg获取懂图片名称
                    if (typeof callbackImg === "function") {
                        eval("callbackImg('" + $(img).attr("src") + "')");
                    }
                }
            }
        });
    });
    //单传图片开始上传,显示等待。
    function preUploadSingleImg() {
        if ($("#loading").length > 0) {
            $("#loading").html("<img style='margin:38px auto;' src='lib/ueditor/themes/default/images/loading.gif'>");
        }
    }
    //单传图片回调,然后清理内容,在清理内容会自动调用contentChange事件,然后再获取上传文件的文件名。
    function uploadSingleImgCallback() {
        UE.getEditor('editor_img').execCommand('cleardoc');
    }
    //上传完成后返回图片地址
    function callbackImg(imgSrc) {
        $("#loading").html('<img style="height: 100px; 100px;" src="' + imgSrc + '"/>');
    }
    //上传点击事件
    function uploadImg() {
        var file = $($("iframe").get(0).contentWindow.document).find("input").get(0);
        file.onchange = function () {};
        //判断浏览器是否是IE
        if (document.all) {
            file.click();
        } else {
            var evt = document.createEvent("MouseEvents");
            evt.initEvent("click", true, true);
            file.dispatchEvent(evt);
        }
    }

    2)修改ueditor.all.js源码,找到上传开始和上传完成的事件,在24466行和24488行分别调用js方法preUploadSingleImg()和uploadSingleImgCallback()。

    if (typeof preUploadSingleImg === "function") {
         preUploadSingleImg();
    }
    function callback(){
       try{
           var link, json, loader,
           body = (iframe.contentDocument || iframe.contentWindow.document).body,
           result = body.innerText || body.textContent || '';
           json = (new Function("return " + result))();
           link = me.options.imageUrlPrefix + json.url;
           if(json.state == 'SUCCESS' && json.url) {
               loader = me.document.getElementById(loadingId);
               loader.setAttribute('src', link);
               loader.setAttribute('_src', link);
               loader.setAttribute('title', json.title || '');
               loader.setAttribute('alt', json.original || '');
               loader.removeAttribute('id');
               domUtils.removeClasses(loader, 'loadingclass');
           } else {
               showErrorLoader && showErrorLoader(json.state);
           }
           //单独提取上传回调函数。
            if (typeof uploadSingleImgCallback === 'function') {
               uploadSingleImgCallback();
           }
       }catch(er){
           showErrorLoader && showErrorLoader(me.getLang('simpleupload.loadError'));
       }
       form.reset();
       domUtils.un(iframe, 'load', callback);
    }

    3)前台页面代码。

    上传头像示例:<br>
    <div id="editor_img" style="display: none;"></div>
    <div id="loading" style="height: 100px; 100px;cursor:pointer;float:left;border:1px solid #000;text-align: center;" onclick="uploadImg()"></div>
    <script type="text/javascript" src="./lib/ueditor/custom.js"></script>
  • 相关阅读:
    Sqlserver的Transaction做Rollback的时候要小心(转载)
    注意Sqlserver中使用with(nolock)后实际上还是会加架构锁,只是不对要查询的数据加S锁而已(转载)
    为什么Sql Server的查询有时候第一次执行很慢,第二次,第三次执行就变快了
    Sql Server 中如果使用TransactionScope开启一个分布式事务,使用该事务两个并发的连接会互相死锁吗
    Css中路径data:image/png;base64的用法详解 (转载)
    android获取mp4视频文件总时长和视频宽高<转>
    “Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle)instead”
    android 除法运算保留小数点
    Directshow 采集音视频数据H264+AAC+rtmp效果还不错
    VS2010中将CString转换为const char*
  • 原文地址:https://www.cnblogs.com/sjshare/p/5250674.html
Copyright © 2011-2022 走看看