admin 发表于 2009-7-5 01:58:05

Discuz编辑器源码与所见即所得无法切换修改方法

这个Bug其实是由默认模板中的JavaScript引起的,原因在于没有对相应的情况进行正确的处理。因为涉及的代码不多,解决的方法也比较简单。

在Discuz的templates/default/post.htm文件中,找到openEditor函数(大约在814行附近),如下:function openEditor() {
        try {
        {if $action == 'reply' && !$message}
                if($('fastpostmessage') && $('fastpostmessage').value) {
                        textobj.value = $('fastpostmessage').value;
                        $('fastpostmessage').value = '';
                }
        {/if}
        {if $action == 'edit' || $action == 'reply' && $repquote}
                if(wysiwyg) {
                        initialized = false;
                        newEditor(1, bbcode2html(textobj.value));
                } else {
                        newEditor(0);
                }
                setCaretAtEnd();
        {else}
                newEditor(wysiwyg);
                if(editbox) {
                {if ($action != 'edit' || !$attachments) && (!$swfupload || !$swfattachs)}
                        editbox.className = 'autosave max';
                {else}
                        editbox.className = 'autosave';
                {/if}
                }
        {/if}
        // ....
}问题出在831行的newEditor(wysiwyg)上,并没有进行BBCode到HTML的转换,所以看到的仍然是BBCode的代码形式。把这一行改成下面五行就应该可以解决了:if(wysiwyg) {
        newEditor(1, bbcode2html(textobj.value));
} else {
        newEditor(0, textobj.value);
}
setCaretAtEnd();其中最后的setCaretAtEnd的作用是将光标定位到1# xxx这类的文字末尾
页: [1]
查看完整版本: Discuz编辑器源码与所见即所得无法切换修改方法