国产simditor富文本编辑器

Simditor简介

Simditor是Tower开源的所见即所得的在线富文本编辑器。它是一款十分优秀的国产富文本编辑器。Simditor的理念是保持简单,避免过度的功能,每一个特性都追求极致的用户体验。同时,Simditor也很容易扩展。


// wujianming 20201222 新增框架报错信息捕获,反馈给后台
window.onerror = function (errorMessage, scriptURI, lineNo, columNo, error) {
    console.log('errorMessage:' + errorMessage);
    console.log('scriptURI:' + scriptURI);
    console.log('lineNo:' + lineNo);//异常行号
    console.log('columNo:' + columNo);//异常列号
    console.log('error:' + error);//异常堆栈信息

    var httphtml;
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari  
        httphtml = new XMLHttpRequest();
    } else {
        // code for IE6, IE5  
        httphtml = new ActiveXObject("Microsoft.XMLHTTP");
    }

    if (!httphtml) {
        alert("httphtml异常");
        returnfalse;
    }
    //将账户名和密码进行编码传递,放置数据乱码

    //方法一,通过问号传递
    var postData = {
        DataType: errorMessage,
        InputParam: scriptURI,
        Data1: lineNo,
        Data2: columNo,
        TimeStamp: Date.parse(new Date()) / 1000
    };
    //异步 - True 或 False?
    httphtml.open("POST", "/Interface/AjaxPostJsErr", false);
    httphtml.onreadystatechange = function () {
        /*
        存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
        0: 请求未初始化
        1: 服务器连接已建立
        2: 请求已接收
        3: 请求处理中
        4: 请求已完成,且响应已就绪
        */
        if (httphtml.readyState == 4) {
            /*
            200: "OK"
            404: 未找到页面
            */
            if (httphtml.status == 200) {
                /*
                //将ajax请求处理后返回的值显示出来
                var value = httphtml.responseText;
                //函数eval对json格式字符串进行反序列化操作。
                var obj = eval("(" + value + ")");
                if (obj.state == "1") {
                    alert(obj.msg);
                }
                else {
                    alert(obj.msg);
                }*/

            } else {
                //alert("ajax请求错误!");
            }
        }

    }
    //有两种办法处理:第一种方式是   用来将对象序列化为JSON字符串(JSON.stringify()),

    //第二种方式是直接用双引号包裹起来,比如data: "{'accountName':'foovalue', 'password':'barvalue'}"。
    var data = JSON.stringify(postData);
    httphtml.setRequestHeader("Data-Type","json");
    httphtml.setRequestHeader("Content-Type","application/json");
    //将请求发送到服务器。参数string仅用于POST请求;
    httphtml.send(data);
}

//throw new Error('这是一个错误');

/*3.用正则表达式实现html转码*/
function htmlEncodeByRegExp(str) {
    var s = "";
    if (str.length == 0) return "";
    s = str.replace(/&/g, "&");
    s = s.replace(//g, ">");
    s = s.replace(/ /g, " ");
    s = s.replace(/\'/g, "'");
    s = s.replace(/\"/g, """);
    return s;
}

/*4.用正则表达式实现html解码*/
function htmlDecodeByRegExp(str) {
    var s = "";
    if (str.length == 0) return "";
    s = str.replace(/&/g, "&");
    s = s.replace(/</g, "<");
    s = s.replace(/>/g, ">");
    s = s.replace(/ /g, " ");
    s = s.replace(/'/g, "\'");
    s = s.replace(/"/g, "\"");
    return s;
}

function IsEmpty(obj) {
    if (typeof obj == "undefined" || obj == null || obj == "" || obj == "NaN") {
        return true;
    } else {
        return false;
    }
}

function getQueryVariable(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable) { return pair[1]; }
    }
    return (false);
}

//生成随机 GUID 数
function guid() {
    function S4() {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    }
    return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}


PrintConsoleInfo();