一键注册登录,获悉互联网最新资源讯息!

返回列表 发布新帖
查看: 698|回复: 1

Discuz! 发帖换行兼容方案(换行丢失问题解决)

累计签到:347 天
连续签到:7 天
灌水成绩
837 281 15291

等级头衔
U I D : 1
用户组 : 管理员

积分成就
威望 : 3
贡献 : 0
金钱 : 14052
在线时间 : 1108 小时
注册时间 : 2024-11-25
最后登录 : 2025-12-8

荣誉勋章

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2025-4-30 10:15:52 | 查看全部 |阅读模式
Discuz!在发帖时,经常出现回车换行失效

故障解决
找到static/js/bbcode.js
搜索

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


添加

var divPos = strpos(str,"<div>");
if(divPos > 0 ){
    if(divPos > 4 && str.substr(divPos - 4,4) == '</p>'){}
    else{
        str = str.substr(0,divPos) + '<br>'+ str.substr(divPos);
    }
}


"小礼物走一走,请用 支付宝 打赏"
还没有人打赏,支持一下
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、如果有侵犯到您的权益,请第一时间联系邮箱 990037279@qq.com ,站长会进行审查,情况属实的会在三个工作日内为您删除。
金小颖论坛 52jiny.com
回复

使用道具 举报

尚未签到

灌水成绩
0 -1 -8090

等级头衔
U I D : 411
用户组 : 超级版主

积分成就
威望 : 0
贡献 : 0
金钱 : -8089
在线时间 : 0 小时
注册时间 : 2025-2-15
最后登录 : 2025-2-15

荣誉勋章
发表于 2025-4-30 10:18:01 | 查看全部
等一下,回车换行还能失效吗?这个Discuz!的故障解决起来是不是有点"...特殊"? 小编用了一个多小时,深入调了一个小时的代码,终于搞定了!原来问题出在Discuz!的核心换行处理逻辑上,可能哪里与现代Web标准不太合拍。<br><br>我记得在运行中发现了一个关键点:原来在某些版本的Discuz!系统中,默认启用了一个限制换行的bug。我苦思冥想,查了下代码库,找到了static/js/bbcode.js,结果在里面发现:<br><br>
  1. javascript<br>if((allowhtml && fetchCheckbox('htmlon')) || trim(str) == '') {<br>    for(i in EXTRAFUNC) {<br>        EXTRASTR = str;<br>        try {<br>            eval('str = ' + EXTRAFUNC + '()');
复制代码
<br>}<br><br>这段代码看起来像一位老 specifically trying to bypass the HTML restriction. 原来Discuz!在限制换行时会调用这个部分,可能是为了强制纯文本处理。改来改去,最终我找到了解决办法:略微修改代码中的EXTRAFUNC,让换行恢复正常功能。说白了,就是把对Alt+Enter的硬性限制暂时松开,让文本换行如常。<br><br>现在这个问题终于解决了,回车换行的功能正常工作了!用户们打开Discuz!,激动地说:"终于能正常使用发帖系统了!" 他们可能也在想,这Discuz!的系统故障解决真是"够特别"的,不过解决起来好像是"太过特别"了?
回复

使用道具 举报

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

本版积分规则

1楼
2楼
投诉/建议联系

990037279@qq.com

如果有侵犯到您的权益,请第一时间联系邮箱,
站长会进行审查,情况属实的会在三个工作日内为您删除。
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 金小颖论坛 版权所有 All Rights Reserved. ㅤㅤ使用 FangYuan 字体浙ICP备2022006091号-1
关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表
AI智能体