讲师中心 微信公众号
AI工具推荐 视频效率加速

layui怎么在前端实现页面无操作10分钟后对敏感业务数据自动打码模糊

浅静大大_9374

浅静大大_9374

发布时间:2026-10-04 07:29:02

|

570人浏览过

|

来源于php中文网

原创

答案是:用sessionStorage标记状态,结合setTimeout/setTimeout重置定时器检测空闲,监听四类事件,触发maskSensitive函数批量定位敏感td并正则替换文本、添加data-masked属性;还原时从table.cache按rowIndex取原始值,仅更新DOM不重载表格。

layui怎么在前端实现页面无操作10分钟后对敏感业务数据自动打码模糊

如何用 sessionStorage + 定时器触发自动打码

页面无操作 10 分钟后对敏感字段(如手机号、身份证号)做前端掩码,核心是「检测空闲」+「安全修改 DOM」+「避免污染原始数据」。不能直接改 table.cache,否则 reload 后还是明文;也不能只改渲染后的 td 文本,否则导出、复制仍暴露原始值。

推荐做法:用 sessionStorage 标记状态,配合 setTimeout 和 clearTimeout 实现空闲检测,触发时仅修改当前页可见单元格的文本内容,并加 data-masked="true" 属性便于后续识别和还原。

  • 监听 mousemove、keydown、scroll、click 四类事件,任一触发就重置定时器
  • 初始设置 let idleTimer = setTimeout(maskSensitive, 10 * 60 * 1000)
  • maskSensitive() 函数里用 layui.jquery('td[data-field="phone"], td[data-field="idCard"]') 批量定位,逐个替换文本(如 text().replace(/^(\d{3})\d{4}(\d{4})$/, '$1****$2'))
  • 替换前先检查是否已打码:if (!$(td).attr('data-masked')) { ... },避免重复处理
  • 别忘了给被修改的 td 加 data-masked="true",方便用户手动刷新或点击“还原”时识别

打码后怎么安全还原(比如用户点击“查看原文”)

自动打码只是视觉层遮蔽,原始数据始终保留在 table.cache 和后端响应中。还原的关键是「按需恢复、不重绘整表」——尤其当表格启用了分页或搜索时,reload 会丢失当前筛选态。

  • 还原函数应从 table.cache['yourTableId'][rowIndex] 中读取原始值,而非依赖 DOM 上可能被多次覆盖的文本
  • 对单个单元格还原:用 layui.jquery('td[data-field="phone"]').eq(rowIndex).text(originalValue).removeAttr('data-masked')
  • 如果需要批量还原(如“全部显示”按钮),遍历所有带 data-masked="true" 的 td,再查对应 rowIndex 去 cache 里取值
  • 不要调用 table.reloadData() 或 table.reload(),它们会清空编辑态、重置分页、丢掉临时勾选
  • 若还原后要支持导出明文,记得同步更新导出前构造的副本数据(参考导出掩码方案中 exportData 的生成逻辑)

为什么不能在 table.render 的 done 回调里直接写打码逻辑

很多人把 maskSensitive() 直接塞进 done: function(res) { ... },结果发现第一次加载就打码了,或者分页切换后失效。这是因为 done 只在初始化或 reload 成功后执行一次,无法响应后续用户行为或空闲状态变化。

PigX UI 前端开发
PigX UI 前端开发

PigX UI Pro 前端开发指南 - Vue 3 + TypeScript + Element Plus。当用户提到 PigX UI、PigX 前端、lgb-mgui 项目、Vue 3 企业级后台开发、Element Plus 后台开发时使用此技能。

下载

立即学习“前端免费学习笔记(深入)”;

  • done 是一次性回调,不是持续监听器;它不感知用户是否还在操作
  • 分页、搜索、重载后,done 不会再次触发,打码状态就断连了
  • 正确入口点是全局事件监听 + 独立定时器,且要在 layui.use(['table', 'jquery'], function(){...}) 内部初始化,确保 DOM 和 layui 模块都就绪
  • 若表格使用了 url 模式,注意 table.cache 在首次加载后才可用,打码函数必须等 cache 存在后再执行首次扫描

移动端要注意的两个坑

手机浏览器上空闲检测更复杂:键盘弹起/收起、页面缩放、横竖屏切换都可能不触发 mousemove,但用户显然没“离开”。只靠桌面端那几类事件会误判。

  • 必须额外监听 focusin 和 blur 事件(尤其 input、textarea),因为软键盘操作会触发它们
  • iOS Safari 下 scroll 事件有延迟或节流,建议加 touchstart 和 touchmove 补充判断
  • 别用 visibilitychange 判断页面是否“在用”——用户切到微信再切回来,页面仍是 visible,但实际已空闲超时
  • 打码后的文本若含空格或特殊字符,iOS 微信内置浏览器可能渲染错位,建议统一用   替代普通空格,或加 white-space: nowrap

真正难的不是写打码函数,而是让“空闲”定义准确、让“还原”不破坏当前交互态、让移动端行为和桌面端保持一致。这些细节漏一个,用户就会在关键时刻看到明文,或者点了还原却没反应。

热门AI工具

更多
Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2283

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

4903

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

6010

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

5498

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

783

2024.05.22

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

3771

2023.10.23

HTML与HTML5的区别
HTML与HTML5的区别

HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

6368

2024.03.06

html5从入门到精通汇总
html5从入门到精通汇总

想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

774

2025.12.30

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.7万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 10.9万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn