2015年11月22日 综合分类 浏览(442) 收藏

如何解决ueditor重新加载xml类型的代码块时格式乱、xml格式丢失问题?

此问题涉及ueditor内部算法,如果使用textarea来绑定ueditor,就会出现这类问题。具体算法代码块见ueditor.all.js:

if (holder) {
    if (holder.constructor === String) {
        holder = document.getElementById(holder);
    }
    holder && holder.getAttribute('name') && ( editor.options.textarea = holder.getAttribute('name'));
    if (holder && /script|textarea/ig.test(holder.tagName)) {
        var newDiv = document.createElement('div');
        holder.parentNode.insertBefore(newDiv, holder);
        var cont = holder.value || holder.innerHTML;
        editor.options.initialContent = /^[\t\r\n ]*$/.test(cont) ? editor.options.initialContent :
            cont.replace(/>[\n\r\t]+([ ]{4})+/g, '>')
                .replace(/[\n\r\t]+([ ]{4})+</g, '<')
                .replace(/>[\n\r\t]+</g, '><');
        holder.className && (newDiv.className = holder.className);
        holder.style.cssText && (newDiv.style.cssText = holder.style.cssText);
        if (/textarea/i.test(holder.tagName)) {
            editor.textarea = holder;
            editor.textarea.style.display = 'none';

        } else {
            holder.parentNode.removeChild(holder);
            holder.id && (newDiv.id = holder.id);
        }
        holder = newDiv;
        holder.innerHTML = '';
    }

}

请注意这段代码:var cont = holder.value || holder.innerHTML;当是textarea绑定ueditor时,笔者发现xml数据会存在转义问题。

所以,请按ueditor demo推荐方式:

<script id="editor" name="content" type="text/plain" style="width:1024px;height:500px;"></script>

不建议使用如下方式(因为会导致重新加载数据编辑时,发现xml转义乱掉):

<textarea id="editor" name="content"  style="width:1024px;height:500px;"></textarea>


赞一下 0 人赞了本文