一直想给评论加上简易的编辑器,最近正好有心情折腾一下,研究了一下,现在把实现的方法和大家分享(本文参考了《为评论框添加简单文字编辑器》这篇文章的绝大部分代码,并修改了一些错误,增加了点功能)。

首先在head或者footer加入下面jQuery代码:

/* Comment Editor */
$(function() {
    function addEditor(a, b, c) {
        if (document.selection) {
            a.focus();
            sel = document.selection.createRange();
            c ? sel.text = b + sel.text + c: sel.text = b;
            a.focus()
        } else if (a.selectionStart || a.selectionStart == '0') {
            var d = a.selectionStart;
            var e = a.selectionEnd;
            var f = e;
            c ? a.value = a.value.substring(0, d) + b + a.value.substring(d, e) + c + a.value.substring(e, a.value.length) : a.value = a.value.substring(0, d) + b + a.value.substring(e, a.value.length);
            c ? f += b.length + c.length: f += b.length - e + d;
            if (d == e && c) f -= c.length;
            a.focus();
            a.selectionStart = f;
            a.selectionEnd = f
        } else {
            a.value += b + c;
            a.focus()
        }
    }
    var g = document.getElementById('comment') || 0;
    var h = {
        strong: function() {
            addEditor(g, '<strong>', '</strong>')
        },
        em: function() {
            addEditor(g, '<em>', '</em>')
        },
        del: function() {
            addEditor(g, '<del>', '</del>')
        },
        underline: function() {
            addEditor(g, '<u>', '</u>')
        },
        quote: function() {
            addEditor(g, '
<blockquote>', '</p></blockquote>
<p>')
        },
        ahref: function() {
            var a = prompt('请输入链接地址', 'http://');
            var b = prompt('请输入链接描述','');
            if (a) {
                addEditor(g, '<a target="_blank" href="' + a + '"rel="external">' + b + '</a>','')
            }
        },
        img: function() {
            var a = prompt('请输入图片地址', 'http://');
            if (a) {
                addEditor(g, '<img src="' + a + '" alt="" />','')
            }
        },
        code: function() {
            addEditor(g, '<code>', '</code>')
        }
    };
    window['SIMPALED'] = {};
    window['SIMPALED']['Editor'] = h
});

HTML代码:

<div id="editor_tools">
   <a href="javascript:SIMPALED.Editor.strong()">粗体</a>
    <a href="javascript:SIMPALED.Editor.em()">斜体</a>
    <a href="javascript:SIMPALED.Editor.del()">删除线</a>
    <a href="javascript:SIMPALED.Editor.underline()">下划线</a>
    <a href="javascript:SIMPALED.Editor.ahref()">链接</a>
    <a href="javascript:SIMPALED.Editor.code()">插代码</a>
    <a href="javascript:SIMPALED.Editor.quote()">引用</a>
    <a href="javascript:SIMPALED.Editor.img()">插图</a>
</div>

PS:如果主题使用了wordpress3.0以上提供的数组描述来写的,应根据具体情况适当修改。

最后将下列样式加入样式表:

/* editor_tools */
.editor_tools{margin:0;padding:0;width:360px;height:20px;border-left:1px solid #ddd;}
.editor_tools a{float:left;color:#999;height:20px;line-height:20px;padding:0 5px;font-weight:bold;background:#fafafa;border-top:1px solid .ddd;border-right:1px solid #ddd;}
.editor_tools a:hover{background:#fff;}

好了,这样一个简洁但很好用的评论编辑器就加入成功了,赶快试试吧!

Last modification:March 5th, 2020 at 05:01 pm