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]