润趣微游

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 130|回复: 0

修正discuz发帖首次换行无效的问题

[复制链接]

171

主题

173

帖子

1668

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1668
发表于 2019-1-13 16:58:31 | 显示全部楼层 |阅读模式
方法一、原文地址:https://segmentfault.com/a/1190000009142976

找遍了百度和google都没有解决方案,连discuz官方都没有出来解决,至今其官网仍有这个问题。

那就自己动手解决吧,顺手打个补丁。虽然走了小路,但是能解决问题。

解决方案:修改static/js/bbcode.js

找到 html2bbcode()方法:

  1. if((allowhtml && fetchCheckbox('htmlon')) || trim(str) == '') {
  2.     for(i in EXTRAFUNC['html2bbcode']) {
  3.         EXTRASTR = str;
  4.         try {
  5.             eval('str = ' + EXTRAFUNC['html2bbcode'][i] + '()');
  6.         } catch(e) {}
  7.     }
  8.     str = str.replace(/<img[^>]+smilieid=(["']?)(\d+)(\1)[^>]*>/ig, function($1, $2, $3) {return smileycode($3);});
  9.     str = str.replace(/<img([^>]*aid=[^>]*)>/ig, function($1, $2) {return imgtag($2);});
  10.     return str;
  11. }

  12. //fix first enter cannot start new line
  13. var divPos = strpos(str,"<div>");
  14. if(divPos > 0 ){
  15.     if(divPos > 4 && str.substr(divPos - 4,4) == '</p>'){}
  16.     else{
  17.         str = str.substr(0,divPos) + '<br>'+ str.substr(divPos);
  18.     }
  19. }
  20. //end
复制代码




方法二、原文地址:http://forum.51itn.com/forum.php?mod=viewthread&tid=15&fromuid=1

开始Discuz编辑器发帖一直好用,突然所见即所得模式就失效了,不但换行无效而且排版、字体颜色也失效了,仔细回想修改过的设置,原来是禁用“Discuz!代码”惹得祸,修改为允许使用“Discuz!代码”完美解决。

操作步骤:【论坛】——【板块管理】——【编辑】(编辑失效的那个板块)


操作步骤:【帖子选项】——允许使用Discuz!代码【是】

方法三:原文地址:http://www.lpsjj.cn/thread-229-1-1.html

找到/static/js/editor.js

替换ctlent方法为

  1. function ctlent(event) {
  2.     if(postSubmited == false && (event.ctrlKey && event.keyCode == 13) || (event.altKey && event.keyCode == 83) && editorsubmit) {
  3.         if(in_array(editorsubmit.name, ['topicsubmit', 'replysubmit', 'editsubmit']) && !validate(editorform)) {
  4.             doane(event);
  5.             return;
  6.         }
  7.         postSubmited = true;
  8.         editorsubmit.disabled = true;
  9.         editorform.submit();
  10.         return;
  11.     }
  12.     if (ctlent_enable[13] && event.keyCode == 13 && wysiwyg) {
  13.         //设置回车输入br标签
  14.         if (!BROWSER.opera) {
  15.             insertText('<br>*', 5, 0);
  16.         } else {
  17.             insertText('<br> ', 5, 0);
  18.         }
  19.         keyBackspace();
  20.         doane(event);
  21.     }
  22.     if(ctlent_enable[9] && event.keyCode == 9) {
  23.         if(!wysiwyg) {
  24.             insertText('\t', 1, 0);
  25.         }
  26.         doane(event);
  27.     }
  28.     if(ctlent_enable[8] && event.keyCode == 8 && wysiwyg) {
  29.         var sel = getSel();
  30.         if(sel) {
  31.             insertText('', sel.length - 1, 0);
  32.             doane(event);
  33.         }
  34.     }
  35. }
复制代码

看看是否缺失keyBackspace方法

  1. function keyBackspace() {
  2.     if(!wysiwyg) {
  3.         return;
  4.     }
  5.     if(BROWSER.ie) {
  6.         sel = editdoc.selection.createRange();
  7.         sel.moveStart('character', -1);
  8.         sel.moveEnd('character', 0);
  9.         sel.select();
  10.         editdoc.selection.clear();
  11.     } else {
  12.         editdoc.execCommand('delete', false, true);
  13.     }
  14. }
复制代码







回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|润趣微游 ( 苏ICP备16029781号 )

GMT+8, 2019-11-21 13:06 , Processed in 0.037856 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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