找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 46|回复: 0

[维护日志] [2026-08-21] [功能] [手机版短消息发送优化] - 去除手机版短消息发送成功后的"操作成功"弹窗

[复制链接]
  • 打卡等级:本地老炮

9337

威望

7439

金钱

1万

贡献

管理员

自由的灵魂

积分
107425
主题
5630
回帖
26661
注册时间
2003-4-10
最后登录
2026-10-1
发表于 2026-8-21 22:42:46 | 显示全部楼层 |阅读模式

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

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

×

1、问题缘起

手机版发送短消息成功后,会弹出"操作成功"提示窗口,用户需要手动点击"确定"才能继续操作,打断了对话流程,降低了聊天效率。用户希望发送短消息后直接上屏,无需额外点击。

探讨过程中提出的独立问题汇总:

序号问题尝试方案结果
1修改语言包 do_success全局替换❌ 影响所有"操作成功"提示
2修改 showmessage 参数添加 showdialog=>false❌ 手机版不生效
3修改 spacecp_pm.php 直接跳转使用 dheader 跳转❌ 消息未写入数据库,不上屏
4使用 register_shutdown_function 延迟跳转脚本结束后跳转❌ 白屏
5在 showmessage.htm 模板中拦截判断 do_success 后跳转❌ 报"表单提交异常"
6在 showmessage.htm 用 JS 跳转用 window.location.href❌ 报503错误
7修改 formdialog 成功回调关闭弹窗并刷新页面⚠️ 发送过快提示也被拦截
8区分成功与错误消息判断 msg 内容决定是否刷新✅ 成功





2、解决方案

(1)简要技术分析
在 formdialog 的 AJAX 成功回调中,判断服务器返回的消息内容:若包含"操作成功"或"do_success"则为成功,关闭加载动画并延迟刷新页面;否则为错误信息,正常弹窗提示。

(2)修改文件列表

操作文件路径
修改static/js/common.js(或 static/js/mobile/common.js)


(3)关键作用代码

文件:static/js/common.js

formdialog.init 方法完整替换为:

  1. var formdialog = {
  2.         init : function() {
  3.                 $(document).on('click', '.formdialog', function() {
  4.                         popup.open('<img src="' + IMGDIR + '/imageloading.gif">');
  5.                         var obj = $(this);
  6.                         var formobj = $(this.form);
  7.                         var isFormData = formobj.find("input[type='file']").length > 0;
  8.                         $.ajax({
  9.                                 type:'POST',
  10.                                 url:formobj.attr('action') + '&handlekey='+ formobj.attr('id') +'&inajax=1',
  11.                                 data:isFormData ? new FormData(formobj[0]) : formobj.serialize(),
  12.                                 dataType:'xml',
  13.                                 proceSSData:isFormData ? false : true,
  14.                                 contentType:isFormData ? false : 'application/x-www-form-urlencoded; charset=UTF-8'
  15.                         })
  16.                         .success(function(s) {
  17.                                 var msg = s.lastChild ? s.lastChild.firstChild.nodeValue : '';
  18.                                 if ((andriod || ios) && formobj.attr('id') == 'pmform') {
  19.                                         if (!msg || msg.indexOf('操作成功') !== -1 || msg.indexOf('do_success') !== -1) {
  20.                                                 popup.close();
  21.                                                 setTimeout(function() {
  22.                                                         window.location.reload();
  23.                                                 }, 300);
  24.                                         } else {
  25.                                                 popup.close();
  26.                                                 popup.open(msg);
  27.                                                 evalscript(msg);
  28.                                         }
  29.                                 } else {
  30.                                         popup.open(msg);
  31.                                         evalscript(msg);
  32.                                 }
  33.                         })
  34.                         .error(function() {
  35.                                 if ((andriod || ios) && formobj.attr('id') == 'pmform') {
  36.                                         popup.close();
  37.                                         setTimeout(function() {
  38.                                                 window.location.reload();
  39.                                         }, 300);
  40.                                 } else {
  41.                                         popup.open('表单提交异常,无法完成您的请求', 'alert');
  42.                                 }
  43.                         });
  44.                         return false;
  45.                 });
  46.         }
  47. };
复制代码





3、最终实现效果

场景修改前修改后
短消息发送成功弹出"操作成功"弹窗,需点击确认无弹窗,0.3秒后自动刷新,新消息上屏
发送过快(触发限制)弹出错误提示正常弹出错误提示(保留)
其他表单提交正常弹窗正常弹窗(不受影响)
PC版正常弹窗正常弹窗(不受影响)





4、重要技术沉淀

关键踩坑点:

  • 电脑浏览器的 F12 设备仿真模式下 navigator.platform 仍为 Win32/MacIntel,andriod/ios 变量为 false,无法模拟手机端行为。必须用真实手机测试,或在控制台手动重写 navigator.defineGetter 模拟环境。
  • 直接 dheader('Location') 跳转会导致数据库写入未完成,新消息不上屏;必须延迟300ms刷新。
  • 不能简单注释 interval_check,否则会移除"发送过快"提示,影响用户体验。
  • 成功与错误必须区分处理:成功时静默刷新,错误时正常弹窗。




5、进一步优化的可能性

  • 将延迟刷新改为增量更新(通过 AJAX 获取最新消息并插入 DOM),避免整页刷新,体验更流畅。(没有闪烁感,可以接受)
  • 将判断逻辑从 msg.indexOf('操作成功') 改为更稳定的标识(如服务器返回 status: 'success' 的 JSON 格式),避免因语言包修改导致判断失效。(等出问题再说)
  • 将 PC 版也应用同样的静默发送逻辑,保持全平台体验一致。(不需要,本来就弹窗)

不懂就搜!点此搜点拨论坛。如果本坛没有,请尝试点此问AI,或跟帖提问。
发帖前注意看置顶帖。
不定期借助AI对点拨论坛陈年老帖进行挖坟回复,打扰勿怪!
发现掉链,请直接回帖报告。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|点拨论坛 |网站地图

GMT+8, 2026-10-2 00:44 , Processed in 0.053260 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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