注册
 找回密码
 注册
江西广告网
查看: 840|回复: 0
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-7-5 01:58:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

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

在Discuz的templates/default/post.htm文件中,找到openEditor函数(大约在814行附近),如下:
  1. function openEditor() {
  2.         try {
  3.         {if $action == 'reply' && !$message}
  4.                 if($('fastpostmessage') && $('fastpostmessage').value) {
  5.                         textobj.value = $('fastpostmessage').value;
  6.                         $('fastpostmessage').value = '';
  7.                 }
  8.         {/if}
  9.         {if $action == 'edit' || $action == 'reply' && $repquote}
  10.                 if(wysiwyg) {
  11.                         initialized = false;
  12.                         newEditor(1, bbcode2html(textobj.value));
  13.                 } else {
  14.                         newEditor(0);
  15.                 }
  16.                 setCaretAtEnd();
  17.         {else}
  18.                 newEditor(wysiwyg);
  19.                 if(editbox) {
  20.                 {if ($action != 'edit' || !$attachments) && (!$swfupload || !$swfattachs)}
  21.                         editbox.className = 'autosave max';
  22.                 {else}
  23.                         editbox.className = 'autosave';
  24.                 {/if}
  25.                 }
  26.         {/if}
  27.         // ....
  28. }
复制代码
问题出在831行的newEditor(wysiwyg)上,并没有进行BBCode到HTML的转换,所以看到的仍然是BBCode的代码形式。把这一行改成下面五行就应该可以解决了:
  1. if(wysiwyg) {
  2.         newEditor(1, bbcode2html(textobj.value));
  3. } else {
  4.         newEditor(0, textobj.value);
  5. }
  6. setCaretAtEnd();
复制代码
其中最后的setCaretAtEnd的作用是将光标定位到1# xxx这类的文字末尾
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表