Typecho 文档:监听评论「遥遥领先」
适用程序:Typecho
程序版本:1.2.1
文档作者:Lopwon
作者博客:Lopwon.com
发布页面:Lopwon.com/3561.html
许可方式:CC BY-NC-SA
官方演示:遥遥领先
注意:此文档源于作者在博客改造中的一些经验总结,转载还请署名。
敬告:此文档操作涉及程序核心文件的修改,作者不对你在使用中产生的任何问题造成的不良后果,承担责任。
文档说明
最近,华为「遥遥领先」有点洗脑,不被监听成了出海销售的卖点,由此得到启发,有了本文档:通过实时监听评论输入框的内容,当检测到评论者输入了博主事先自定义的敏感词后,即时将其替换为 ***
并弹出浮层提示。
相对于之前制作的,在后端实现评论脱敏的 Lopwon Oops 插件,以下方法是在前端处理敏感词,也能弹出提示信息。
提示:此方法会被不讲武德的手段(比如:使用空格、横杠隔开),绕过关键词脱敏,所以,没有后端脱敏有效。
使用方法
A 涉及文件
usr/themes/***/footer.php
B 改造文件
作用:给评论框添加关键词脱敏功能
在主题的适当文件适当位置(如:文件 footer.php 页脚处)引入以下代码(留意注释,以及按需修改):
<style>
.Lopwon_Popup {
position: fixed;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
padding: 20px;
background-color: #eee;
border: 1px solid #ccc;
border-radius: 5px;
display: none;
}
</style>
<div id="Lopwon_Popup" class="Lopwon_Popup"></div>
<script>
var keywords = [
'苹果',
'联想',
]; // 在数组里自定义更多关键词,这些关键词在评论内容中,会被脱敏!
function checkInput() {
var textarea = document.getElementById("textarea"); // 评论框 <textarea> id 名称,通常为 textarea
var input = textarea.value; // 获取 textarea 中的文本内容
var popup = document.getElementById("Lopwon_Popup"); // 获取弹出提示框元素
for (var i = 0; i < keywords.length; i++) {
var keyword = keywords[i]; // 获取当前关键词
if (input.includes(keyword)) {
popup.style.display = "block"; // 显示弹出提示框
popup.innerHTML = "检测到敏感词:" + keyword; // 设置提示框内容
input = input.replace(new RegExp(keyword, "g"), "***"); // 实时替换关键词
textarea.value = input; // 更新 textarea 中的文本内容
setTimeout(function() {
popup.style.display = "none"; // 2 秒后隐藏提示框
}, 2000);
break;
}
}
if (input.length === 0) {
popup.style.display = "none"; // 如果文本内容为空,默认隐藏提示框
}
}
function handlePaste(event) {
setTimeout(checkInput, 0); // 延迟执行 checkInput 来处理粘贴事件
}
var textarea = document.getElementById("textarea"); // 获取 textarea 元素并添加事件监听器
textarea.addEventListener("input", checkInput); // 监听输入事件,触发 checkInput 函数
textarea.addEventListener("paste", handlePaste); // 监听粘贴事件,触发 handlePaste 函数
</script>
至此,已可以实现监听评论「遥遥领先」功能。