前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >介绍一个文章划线标记小功能

介绍一个文章划线标记小功能

作者头像
2Broear
发布于 2024-03-22 01:41:14
发布于 2024-03-22 01:41:14
14400
代码可运行
举报
文章被收录于专栏:2B博客2B博客
运行总次数:0
代码可运行

文章摘要chatGPT standby chatGPT responsing..

想法

灵感来源于某次逛公众号文章的时候,在文章中偶然看到了一个下划线,经过它时还会显示多少人划线标记。感觉这个功能其实对博文也挺方便的,因为都有评论系统,感觉可以通过评论用户信息做一个多人划线标记功能,自己留作标记的同时也方便其他浏览文章的博友发现和标记文章主要相关内容。

众所周知我目前用的平台是 wordpress,所以该功能也是基于 php 环境下进行开发的,由于标记数据储存在本地而非数据库中,可以灵活应用于各类基于php框架的博客系统上(如typecho、zblog、emlog等)。唯一一点是使用了 wordpress 的文章 id 来区分不同文章页面(关于这点其实可以使用加密 location.pathname 发送到后端作为文章别名区分,后续版本可能以此更新),故若使用其他平台需要修改前端请求中的pid参数

功能简介

划线标记功能结构由文章—用户—标记三部分组成,通过wordpress文章id区分:同一篇文章下可以理论上可以存在不限量标记,但同一个用户(md5邮件区分)默认情况下仅能存在3个标记(可携带自定义参数初始化标记)。而同一个标记(内容)仅能在该文章中存在一次。(若通过某种手段重复标记某段已存在于远程记录时,后端会返回标记已存在的错误信息),另若当前选中文本在当前段落中存在多个相同字符时,前端会阻止用户提交标记。

本着只要能把功能复现就行的想法,在持续一周左右的时间后正式开始测试,目前该功能已集成到2BLOG主题最新的 #v1.3.9.2 版本中,后续将对其进行持续迭代更新,下面讲下简单实现思路。

实现思路

前端直接用的 getSelection api 执行选中标记操作(之前本想做跨浏览器兼容,后面想想太麻烦,先实现可以用了再说,反正又不是上线的东西 后面可以慢慢迭代无所叼谓),用户信息存了本地cookie(刚开始做的内容储存,后来改为用户本地校验内容)。

后端用的东西基本和我之前那篇实现gpt的思路基本是一致的,都是本地储存。唯一只是多了部分用户校验,因为涉及到用户新增和删除操作问题(毕竟所有人在评论后都可以对文章进行标记或删除)暂时只能先这么弄(虽然目前配置了文章标记次数限制,不过并没有做黑白名单限制)。

WordPress 简单实现 chatGPT 文章摘要

灵感来源于之前在浏览 HEO 博文时候偶然看到文章前有一段 AI 摘要,第三人称以打字形式来简述文章内容还是蛮酷的~ 于是拟了个把这个功能集成到 2BLOG ...

2BROEAR 21/03/2024 chatgpt | 2306 views.

用户校验

目前做了两个信息校验,一个是最基本的邮件mail(明文验证,其实刚开始的方案是有md5来做,后来因为新增了显示标记用户 gravatar 头像的需求所以不得不放弃该方案,取而代之的只能是远程明文对比验证。但是,为了防止出现邮件明文暴露后造成伪造请求的情况,在执行部分敏感操作时必须携带储存在用户本地的 timestamp 时间戳(明文)与储存在远程服务器中的ts(加密,防止远程ts暴露后获取到对应的本地ts明文)进行校验,通过后再放行相关操作。

但ts交互验证有一个明显的坏处就是:如果标记浏览器与执行操作的浏览器环境不同(即本地cookie无相关ts记录)哪怕当前是用户本人操作也无法通过远程ts验证,这种情况目前仅做了用户操作提示,暂无具体替代解决方案。

其他

这个功能目前处于测试阶段,使用过程中有任何bug欢迎反馈哟/doge。(*另附一些常用的初始化参数如下(具体参数等内容可前往 github 查看)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const custom_args = {
    static: {
        dataMax: 3, // 最大标记数量
        lineAnimate: true, // 划线动画
        lineColor: "red", // 划线颜色
        lineBold: 10, // 划线高度(标准百分比)
        lineBoldMax: 30, // 划线高度(悬浮百分比)
    },
    element: {
        effectsArea: document.querySelector('.content'), // 可选区域
        commentArea: document.querySelector('#vcomments textarea'), // 评论区域
        commentInfo: {
            userNick: document.querySelector('input[name=nick]'), // 评论用户
            userMail: document.querySelector('input[name=mail]'), // 评论邮箱
        }
    },
}
// 携带参数初始化
new marker.init(custom_args);

todo

一些預計添加或修復的待辦事項

  • 約束後端請求頻率,修復并發請求失敗但返回已完成問題
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024/03/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WordPress 简单实现 chatGPT 文章摘要
灵感来源于之前在浏览 HEO 博文时候偶然看到文章前有一段 AI 摘要,第三人称以打字形式来简述文章内容还是蛮酷的~ 于是拟了个把这个功能集成到 2BLOG 主题的计划。之前也用过 chatGPT,感觉这个需求应该不是很难,毕竟直接在 chat.openai.com 提问也可以拿到结果。因 eventStream 流式传输比较繁杂的原因(懒),故本文主要方式为简单粗暴的直接请求 chatGPT 返回响应结果。
2Broear
2024/03/12
2920
WordPress 简单实现 chatGPT 文章摘要
实战:Express 模拟 CSRF 攻击
CSRF攻击 是前端领域常见的安全问题,概念方面不再赘述,可以参考维基百科。对于这些概念,包括名词定义、攻击方式、解决方案等估计大家都看过不少,但留下印象总是很模糊,要动手操作一番才能加深印象并能真正理解,所以我决定动手实现一个 CSRF 的攻击场景,并通过演示的方式讲解 CSRF 的防范手段。
疯狂的技术宅
2021/02/25
1.4K0
实战:Express 模拟 CSRF 攻击
跨站请求伪造—CSRF
CSRF,是跨站请求伪造(Cross Site Request Forgery)的缩写,是一种劫持受信任用户向服务器发送非预期请求的攻击方式。
FEWY
2019/11/27
1.4K0
为博客页面添加海报分享功能
以前浏览别的博主网站的时候总会在文章页末看到或多或少一些分享功能,比较常见的都是些社交平台的按钮,当时想的是功能虽好可有多少人会去用啊?心想嘛就是个摆设还不如不要占位置233
2Broear
2024/03/12
1490
web安全之XSS实例解析
跨站脚本攻击(Cross Site Script),本来缩写是 CSS, 但是为了和层叠样式表(Cascading Style Sheet, CSS)有所区分,所以安全领域叫做 “XSS”;
前端迷
2020/07/03
1.4K0
web安全之XSS实例解析
【JS】328- 8个你不知道的DOM功能
最近一直在关注工具,从 React 和 npm-install-everything 中休息一下,看看一些原生的 DOM 和 Web API 的功能,他们可以在没有任何依赖库的浏览器中直接运行。
pingan8787
2019/08/26
1.5K0
Web前端安全策略之XSS的攻击与防御
随着技术的发展,前端早已不是只做页面的展示了, 同时还需要做安全方面的处理,毕竟网站上很多数据会涉及到用户的隐私。 若是没有些安全策略, 很容易被别人通过某些操作,获取到一些用户隐私信息,那么用户数据隐私就无法得到保障。 对于前端方面的安全策略你又知道多少呢?接下来我们来介绍一下~
@零一
2021/01/29
7700
Web前端安全策略之XSS的攻击与防御
CSRF攻击与防御
跨站请求伪造(Cross-site request forgery)简称为 CSRF。这种攻击方式很奇特,它是伪造用户的请求发动攻击的,在 CSRF 攻击过程中,用户往往在不知情的情况下构造了网络请求。
多云转晴
2020/07/10
2K0
密码安全与会话安全
对于登录大家并不陌生,访问系统几乎都需要登录。因为系统也不知道是谁在访问,所以需要你告诉系统你是谁,还需要证明你真的是你,如何证明?给系统展示你的密码,因为密码只有你才拥有,你有这个密码,你就能证明你真的是你,这就是一个登录。
ThoughtWorks
2021/09/15
1.3K0
【基本功】 前端安全系列之二:如何防止CSRF攻击?
当当当当,我是美团技术团队的程序员鼓励师美美~“基本功”专栏又来新文章了,本篇是我们前端安全系列文章的第二篇,主要聊聊前端开发过程中遇到的CSRF问题,希望对你有帮助哦~
美团技术团队
2019/03/22
2K0
【基本功】 前端安全系列之二:如何防止CSRF攻击?
给博客添加一个安全跳转页面
更新记录:本次更新了在twikoo评论区中添加网页跳转的功能点击跳转更新内容最近更新
柳神
2024/05/30
1760
给博客添加一个安全跳转页面
前端实战:electron+vue3+ts开发桌面端便签应用
具体实现过程, 内容很长, 建议先点赞收藏, 再一步步学习, 接下来会就该项目的每一个重点细节做详细的分析.
徐小夕
2021/09/03
3.5K0
前端实战:electron+vue3+ts开发桌面端便签应用
基于OT与CRDT协同算法的文档划词评论能力实现
当我们实现在线文档平台时,划词评论的功能是非常必要的,特别是在重文档管理流程的在线文档产品中,文档反馈是非常重要的一环,这样可以帮助文档维护者提高文档质量。而即使是单纯的将划词评论作为讨论区,也是非常有用的,尤其是在文档并不那么完善的情况下,对接产品系统的时候可以得到文档之外的输入。那么本文将通过引入协同算法来解决冲突,从而实现在线文档的划词评论能力。
WindRunnerMax
2024/04/11
2360
前端技术工具类文章
Darkmode.js运用的是CSS里面的一个特性叫mix-blend-mode ,这个 属性描述了元素的内容应该与元素的直系父元素的内容和元素的背景如何混合,再加上Javascript的辅助判断哪些页面上的元素需要黑化的,哪些是不需要黑化的。
达达前端
2021/11/02
1.3K0
Nuxt3在使用Tailwindcss情况下,如何优雅实现深色模式切换?
随着前端更新,网站设计中,深色模式也成为了一种备受欢迎的设计趋势。可以帮助用户减少眼睛的负担,同时也更加适合在光线较暗的环境下使用。
Mintimate
2023/07/31
2K0
Nuxt3在使用Tailwindcss情况下,如何优雅实现深色模式切换?
javaweb实现即时消息推送功能
在浏览某些网页的时候,例如 WebQQ、京东在线客服服务、CSDN私信消息等类似的情况下,我们可以在网页上进行在线聊天,或者即时消息的收取与回复,可见,这种功能的需求由来已久,并且应用广泛。
全栈程序员站长
2022/08/23
2.1K0
javaweb实现即时消息推送功能
使用 esbuild 来打包一个 React 库
esbuild 的大名相信大家也有耳闻,它是一个非常快的 Javascript 打包工具,用 GO 语言编写,是 figma 的 cto Evan Wallace 著作的,一个 30 min 的 webpack 项目用 esbuild 可以分钟级运行。本文将记录使用 esbuild 来打包一个 React 库。
狂奔滴小马
2022/01/20
1.6K0
使用 esbuild 来打包一个 React 库
使用 HTML、CSS、JavaScript 创建一个简单的井字游戏
使用 javascript 创建游戏是最有趣的学习方式。它会让你保持动力,这对于学习 Web 开发等复杂技能至关重要。此外,你可以和你的朋友一起玩,或者只是向他们展示你做的小东西,他们也会感到很有趣的。在今天的博文中,我们将使用 HTML、CSS 和 Javascript 创建一个井字游戏。
海拥
2021/11/25
2K0
苹果AI爆炸全宇宙!一夜重塑iPhone,Siri全家桶史诗级更新,马斯克怒了
从iPhone、iPad到Mac,无不被生成式AI覆盖。横空出世的Apple Intelligence,让苹果全系产品有了史诗级升级。
新智元
2024/06/17
1600
苹果AI爆炸全宇宙!一夜重塑iPhone,Siri全家桶史诗级更新,马斯克怒了
对 WordPress 主题进行单元测试(Theme Unit Test)
在制作 WordPress 的过程中,除了对整体的结构等进行排版布局等,还必须要对正文的内容和其他地方进行修饰和排版,例如正文中可能出现的 标题(h2、h3)、列表(ul、ol)、表格(table) 以及不同的文章类型效果等等。这就是 WordPress 主题的单元测试(Theme Unit Test)。
Denis
2023/04/15
2K0
相关推荐
WordPress 简单实现 chatGPT 文章摘要
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验