前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Valine 输入邮箱即时显示 Gravatar 头像

Valine 输入邮箱即时显示 Gravatar 头像

作者头像
2Broear
发布于 2024-03-12 02:23:04
发布于 2024-03-12 02:23:04
18900
代码可运行
举报
文章被收录于专栏:2B博客2B博客
运行总次数:0
代码可运行

评论框头像

这个功能我是在 @Jakehu 主题看到的评论头像显示,还有一些其他的主题也有相似的功能,不过 Valine 没有所以干就完了,奥里给。

评论显示用户头像

具体实现

说起修改头像的话,之前应该是有过一次 qq 头像的获取,操作之后能大概了解 valine 是如何通过邮件来获取 gravatar 头像的,通过这些原理就可以做这个头像显示功能了。

实现思路

利用 Valine 提供的内置本地储存 localStorage.ValineCache 我们就可以得到当前评论用户的昵称 nick 邮件 mail 以及链接 link ,拿到邮件 mail 后即可通过 valine 内置转 md5 函数或通过 api 来获取用户头像。

实践

打开 Valine.js 定位到 var B=function(){ 然后我们在这之前添加一个 function A 定义函数

注意!将函数定义在 function A() 之前会导致无法评论!

打开 Valine.js 定位到 u.on("keydown", document, function(e) { ... )} 之后,添加以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let avatar = u.find(t.el, "#avatar img"),  //头像元素
        input = u.find(t.el, ".vinput.vmail"),  //评论框邮件
        data = JSON.parse(localStorage.ValineCache),  //转换本地储存为对象
        email = data.mail,  //本地储存邮件
        gravatar = m.cdn + a(email) + m.params;  //默认 gravatar 邮件
    avatar.setAttribute('src', gravatar);  //写入头像元素
    //即时更新头像
    input.onchange = function(){
        let email = this.value;  //输入的新邮件
        avatar.setAttribute('src', gravatar)  //写入新邮件到头像元素
    }

//更新 Gravatar API 的使用:
avatar.setAttribute('src', 'https://api.paugram.com/gravatar/?email='+email);

拓展

以上代码是已经可以实现显示邮件头像了,不过输入qq邮件不会自动检测,需要再添加一部分判断

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//判断是否qq邮件
if (email.indexOf("@qq.com") >= 0) {
    var prefix = email.replace(/@.*/, ""),
        pattern = /^\d+$/g,
        result = prefix.match(pattern);
    result !== null ? gravatar = "//q.qlogo.cn/headimg_dl?dst_uin=" + prefix + "&spec=640" : false;
};
avatar.setAttribute('src', gravatar);  //写入头像元素

//即时更新头像
input.onchange = function() {
    //判断是否qq邮件
    if (email.indexOf("@qq.com") >= 0) {
        var prefix = email.replace(/@.*/, ""),
            pattern = /^\d+$/g,
            result = prefix.match(pattern);
        result !== null ? gravatar = "//q.qlogo.cn/headimg_dl?dst_uin=" + prefix + "&spec=640" : false;
        avatar.setAttribute('src', gravatar)  //是则写入qq头像
    }else{
        avatar.setAttribute('src', m.cdn + a(email) + m.params)  //否则重新写入 gravatar 头像
    }
}

以上完成后即可根据当前邮件地址获取用户头像。

优化反馈

有关 qq 邮件的重复判断及即时更新头像需要重新写入邮件获取规则

已知 bug

首次评论因获取不到缓存信息导致无法执行 oninput 即时更新电子邮件头像,该 bug 仍在修复中 ,不知道为什么,获取不到 ValineCache 时(undefined)就无法触发 onchange 事件(我猜可能是代码位置没放对)只能后期加个对 ValineCache 的判断再触发 onchange 事件,如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (localStorage.ValineCache == undefined) {
    document.querySelector(".vmail").onchange = function() {
        let tmail = this.value,
            avatar = document.querySelector("#avatar img");
        if (tmail.indexOf("@qq.com") >= 0) {
            let prefix = tmail.replace(/@.*/, ""),
            pattern = /^\d+$/g,
            result = prefix.match(pattern);
            result !== null ? qqavatar = "//q.qlogo.cn/headimg_dl?dst_uin=" + prefix + "&spec=640": false;
            avatar.setAttribute('src', qqavatar)
        } else {
            //这里还是需要用到api,因为后期无法使用 valine 自带的邮件解析函数..
            avatar.setAttribute('src', '//api.paugram.com/gravatar/?email=' + tmail)  
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/06/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用PHP语言通过邮箱获取全球公认的Gravatar头像地址
在许多地方我们都需要用到头像,头像就像你在互联网上除了昵称以外的第二个标识~比如我的滑稽! ?  什么是 Gravatar Gravatar 是一个 Globally Recognized Avata
沈唁
2018/06/07
2.1K0
Emlog使用qq头像作为评论头像并缓存到本地
思路:先判断该条评论是否填写了邮箱,未填写则使用默认;若填写了,再判断其中是否含有“@qq.com”;然后去除“@qq.com”并判断余下的部分是否为qq号,是则获取相应的头像并缓存下来,否则使用Gravatar头像。
用户8099761
2023/05/10
3250
Typecho将Gravatar头像改为QQ头像
相信大部分做过网站的朋友都知道,Gravatar是一个全球性的头像设置平台 除中国以外大部分网站都是调用的此平台头像,但因为我们伟大的祖国有一般人射不穿的城墙 所以用这个头像平台的用户很少,导致大部分使用此头像平台的网站 评论区总会有很多Gravatar的官方默认头像
HCG_Sky
2020/07/24
3.1K0
Typecho——非插件方式实现QQ和Gravatar缓存到本地
体验: https://oyo.cool/ | https://wangyangyang.vip/ | https://easybe.org/ [亚太地区的服务器暂时关闭了,cnmae转发不行会被拦截]
思索
2024/08/15
1210
Typecho——非插件方式实现QQ和Gravatar缓存到本地
EMLOG评论获取QQ资料 | 传递QQ头像
在网站找了很多,发现很多基本上已经不能使用,所以自己研究了一个,按照以前的代码进行修改。
用户8099761
2023/05/10
1K0
typecho将Gravatar头像改为QQ头像
找到主题下的comments.php文件,查找关键字gravatar 我们会发现下面一段语句
逍遥子大表哥
2021/12/17
5.4K0
typecho将Gravatar头像改为QQ头像
EMLOG评论获取QQ资料
EMLOG评论获取QQ资料 | 传递QQ头像 1、首先在module.php文件里找到: //blog:发表评论表单 function blog_comments_post($logid,$c
Youngxj
2018/06/07
8650
EMLOG评论获取QQ资料
1、首先在module.php文件里找到: //blog:发表评论表单 function blog_comments_post($logid,$ckname,$ckmail,$ckurl,$veri
Youngxj
2018/06/06
7360
Typecho评论头像隐藏QQ号
因为腾讯留的头像接口有很多,大部分都是需要传入QQ参数,例如:http//q.qlogo.cn/g?b=qq&nk=qq&s=100这个接口,需要跟QQ参数才能显示QQ头像,这样会暴露用户隐私 那
qiangzai
2021/12/21
1K0
Typecho评论头像隐藏QQ号
基于Spimes2.5主题的魔改与优化
本文不涉及Spimes主题文件的分享,只是提供了魔改后的functions.php | post.php | setjs.js文件的下载,如有侵犯到作者的权益,请联系我删除本文。
Inkedus
2020/06/28
9330
分享个自用头像函数 作用自己细品
由于做模板的时候很多地方需要调用头像,比如啊评论这块需要判断该评论是否是游客还有注册用户,此用户头是否已经上传头像等等等等等,所以就自己写了个函数方便调用,代码没什么难度小白一看就懂。
用户8099761
2023/05/11
1500
修改Typecho评论调用QQ头像
Typecho默认头像来自Gravatar,没设置过头像就丑丑的,想替换为QQ头像。之前用的WordPress,对Typecho不是很熟悉,于是进行百度。 Typecho似乎百度相关资料特别少,唯一能找到的是巷子工坊的两篇文章,但他实现的效果似乎仅支持QQ邮箱,普通邮箱反而不适用。 经过反复测试,最终解决办法如下:
半夜喝可乐
2024/09/30
1260
typecho 评论头像显示不正常/拉长
因为是从wordpress程序转换过来的,之前的文章评论都有类似的头像显示异常,我以为是wp转换的原因,也没怎么管,今天刚好测试了一下评论功能,结果才发现头像被拉的长长的,问了一下主题作者,作者说是CSS的原因,只能自己瞎搞了。
纯情
2023/04/26
4320
typecho 评论头像显示不正常/拉长
Hexo NexT 评论系统 Valine 的使用
注明:以下方案是在 Valine 1.4.9 版本下完成,对于其他版本应该会根据实际情况修改参数,使用 F12 查看参数修改即可使用!(说明于 2020 - 04 - 25)
零式的天空
2022/03/28
1.7K0
添加WordPress评论输入邮箱实时显示Gravatar头像功能
这个不是什么新鲜的功能了,这个功能即是实现当留言评论时,你输入email后,就会实时显示你的Gravatar头像。对于提高用户体验是有非常的帮助,特别是用户评论量非常大的用户。Jeff 本来也考虑在本站DeveWork.com 的主题上实现它,但看到需要加载7kb左右的javascript文件,我就不干了——虽然7kb不大,但我在意。自己也权衡一下是否为自己的主题添加这个功能吧~ 实现原理:实时显示是用JavaScript来实现的,Gravatar图片的链接没有什么秘密,很简单就能得到,“http://ww
Jeff
2018/01/19
1.1K0
添加WordPress评论输入邮箱实时显示Gravatar头像功能
【说站】网友在线查看任意QQ号高清头像JS代码
本文编程笔记首发 直接输入QQ号,就可以查看高清头像和下载保存了。 <div style="border-bottom:#000 2px solid;text-align:center;border-left:#000 2px solid;padding-bottom:20px;background-color:#f8f8f8;padding-left:20px;width:399px;padding-right:20px;margin-left:auto;border-top:#000 2px
很酷的站长
2022/11/28
2.6K0
【说站】网友在线查看任意QQ号高清头像JS代码
手机验证码登录QQ,出现隐藏QQ?实战爆破一下
说是什么手机号验证码登录就会出现隐藏QQ,秉承着好奇心害不死人的原则试了一下,我把两个手机号试了一下,发现了一个隐藏QQ号,就是:85xxxxxx39这个
林墨白
2023/08/01
1.2K0
修复 Valine 评论泄漏隐私问题
这个问题在我20年刚开始使用 valine 作为评论的时候就有了,不过当时的作者貌似并没有理会这个问题(原因应该是设计的时候就没有考虑进去这些东西,导致修改的话会更替掉一些东西),评论的隐私信息无非就是ip和邮件,主要还是邮件,一般来说ip默认是关闭的,不过就邮件来说这个东西在评论里只是拿来调用 gravatar 头像和回复邮件提醒用的,我看作者都没所谓我也就没太关注这个,但邮件的确算个人隐私。
2Broear
2024/03/12
1600
修复 Valine 评论泄漏隐私问题
Matery之Valine评论优化
  本篇文章对Matery的valine评论系统进行优化,文章中大多数内容参考自姑的优化代码。原博主是基于Hexo主题的Butterfly和Sakura的valine优化,现将其移植到Matery主题中。
LuckySec
2022/11/02
4440
Matery之Valine评论优化
Valine 用户评论排行统计方案
同样的,先前在浏览其他主题偶然发现了评论统计这么一个东西,数据统计了所有用户评论数量及用户信息(昵称、邮件头像等)然后将数据写入到页面展示出来,感觉还蛮好玩的,当时对 valine 不太了解所以没有下文,不过现在这个功能已经可以使用 Leancloud 在 Valine 评论中实现了~
2Broear
2024/03/12
1560
Valine 用户评论排行统计方案
相关推荐
使用PHP语言通过邮箱获取全球公认的Gravatar头像地址
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验