博客园评论区头像换页更新解决方案

news/2024/11/15 21:47:30/文章来源:https://www.cnblogs.com/gshang/p/18416309

前言

博客园博客正文的评论区的每一条评论其实都是带用户头像链接的,因此有些博客主题利用这个链接,对评论新增了头像显示功能。

但是这部分功能只能在第一次加载页面时有效,一旦出现评论翻页、排序等操作,头像又没了。

为了解决这个问题 ,对#blog-comments-placeholder 这个元素进行改动监控,一旦有变动则再次执行一次头像设置函数。

实现过程

头像设置函数 setAvatar

/* 头像设置 */
setAvatar = function () {// 头像$.each($(".feedbackItem"), function (index, ele) {var self = $(ele);// 已经处理过了的则跳过if (self.find('comment_avatar_container').length > 0){return;}// 这里自己定义需要如何设置评论区头像可自行修改var obj = self.find(".blog_comment_body");var id = obj.attr("id").split("_")[2];var blog = self.find('a[id^="a_comment_author"]');var blogUrl = blog.attr("href");var imgSrc =$("#comment_" + id + "_avatar").html() ||"http://pic.cnblogs.com/avatar/simple_avatar.gif";self.prepend('<a class="comment_avatar_container" target="_blank" href="' +blogUrl +'"><img src="' +imgSrc +'" style="float:left;" class="comment_avatar"></a');$(".feedbackListSubtitle").addClass("feedbackListSubtitle_right");$(".feedbackCon").addClass("feedbackCon_right");});
}

头像更新 updateAvatar

/* 头像更新 */
updateAvatar = function()
{// 获取要监控的元素const targetNode = document.getElementById('blog-comments-placeholder');// 创建一个 MutationObserver 实例,并定义回调函数const observer = new MutationObserver((mutationsList) => {for (const mutation of mutationsList) {if (mutation.type === 'childList') {// console.log('A child node has been added or removed.');setAvatar();} else if (mutation.type === 'attributes') {// console.log('The ' + mutation.attributeName + ' attribute was modified.');}}});// 配置观察选项const config = {attributes: true,childList: true,subtree: false // 观察目标节点及其后代节点};// 启动观察observer.observe(targetNode, config);
}

评论区设置 setComment

/* 评论区 */
setComment = function () {$(".feedbackItem").ajaxComplete(function (event, xhr, option) {//评论头像if (option.url.indexOf("GetComments") > -1) {setTimeout(function () {setAvatar();}, 50);}});  updateAvatar();  
};

页脚代码

<script>
$(function () {setComment();	
});
</script>

效果测试

点击本博客评论数最多的博文进行查看:https://www.cnblogs.com/gshang/p/biliTheme.html#!comments

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/798103.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数学知识(初赛)

求最大公约数的技巧 利用辗转相除法,gcd(A,B)=gcd(B,A%B),就可以很快速求解。 应用:化简分数,数学题等等。原理:理解为一个长方形,然后要尽量去铺最大正方形,以满足铺满长方形。最后一个铺满长方形的那个正方形肯定是最大公约数。 如下图,这个长方形先铺一个绿色…

高等数学 2.4 隐函数及由参数方程确定的函数的导数

目录一、隐函数求导二、由参数方程所确定的函数的导数三、相关变化率 一、隐函数求导 函数 \(y = f(x)\) 表示两个变量 \(y\) 与 \(x\) 之间的对应关系,这种对应关系可以用各种不同方式表达,例如 \(y = \sin x\) ,\(y = \ln x + \sqrt{1 - x^2}\) 等。这种函数表达方式的特点…

小林coding学习笔记(内存页面置换算法)

缺页中断示意图1 在CPU里执行一条查找某个页面A的指令,首先是虚拟内存,会到虚拟内存和物理内存的映射关系的页表中查询。 2 页表中不存在需要查找的页面A的有效信息。 3 则触发缺页中断信号给操作系统,操作系统收到缺页中断信号后,就会去磁盘里面查找该页面。 4 操作系统在…

Unity中的三种渲染路径

Unity中的渲染路径 Unity的渲染路径 在Unity里,渲染路径(Rendering Path)决定了光照是如何应用到Unity Shader中的。因此,我们只有为Shader正确地选择和设置了需要的渲染路径,该shader的光照计算才可以被正确执行。 unity中的渲染路径:Forward Rendering Path (向前渲染…

白云龙期货投资-第一讲

# 期货散户投资者常见错误 抄底摸顶,进场无依据,无参照物 小赢大亏(小鸟吃食 大象拉屎资金曲线) 用错误的方法分析行情(金死叉) 过分依赖各种交易软件,公式 持亏损的单子隔夜 死扛(进场条件)期货散户投资者常见错误 抄底摸顶,进场无依据,无参照物 小赢大亏(小鸟吃食 大…

408五级流水线强化课笔记

408强化课录播五级流水线相关内容笔记指令流水线基本概念:简单的概念题 指令流水线基本实现:指令按序发射,按序完成 各种冒险:结合MIPS指令序列分析并处理冒险 超标量和动态流水线:简单的概念题五级流水线 五级流水线的设计是为了通过并行提高处理器的吞吐量。图片来自CSA…

关键字检索分析-案例2:开源代码分析

第一次拿来分析一下开源代码,上效果图代码和文件地址 具体内容参考我前面一篇博客 spring-frameworkredis, redis单个文件非常大mybatis我实话我没有看过这些源码。 之前的博客里的脚本,bug挺多的。可以以gitee这里为主(链接在最上面)。

小林coding学习笔记(进程调度算法)

//进程调度算法 进程调度算法是CPU通过进程调度算法决定某个时刻去调用哪个进程到CPU上运行的算法 1、先来先服务调度算法 每次从就绪队列的队头调度到CPU上运行,直到进程退出或被阻塞,才会继续从队列中调度进程运行。 特点:对短作业不利,对长作业有利,无法平衡短作业与长…

spring mvc详细讲解(前后端分离模式)

在前后端分离模式下,Spring MVC 的作用主要集中在处理后端的业务逻辑和 API 接口,而不再直接管理视图部分。也就是说,Spring MVC 的重点是如何处理客户端的请求并返回数据(通常以 JSON 或 XML 格式),而视图渲染交给前端框架(如 Vue.js、React 等)来完成。 下面是针对前…

关于API淘宝数据接口

在当今数字化商业时代,淘宝作为全球领先的电商平台,提供了丰富的API接口,使开发者能够高效地获取和管理电商数据。淘宝API接口不仅简化了与淘宝平台的交互,还为商家提供了强大的数据支持,帮助他们更好地分析市场趋势、优化店铺运营、提升用户体验。 淘宝API接口概述 淘宝A…

解决 Debian下 nvm ls-remote 列表只出现iojs版本的问题

1.进入 .bashrc 里vi ~/.bashrc2. o键新开一行增加下面内容export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist 3.重载nvm配置source ~/.bashrc4.验证配置是否修改成功,如图则表示成功echo $NVM_NODEJS_ORG_MIRROR 5.再次查看可安装的node版本nvm ls-remote 备注:如果上…

解决 nvm ls-remote 列表只出现iojs版本的问题

1.进入 .bashrc 里vi ~/.bashrc2. o键新开一行增加下面内容export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist 3.重载nvm配置source ~/.bashrc4.验证配置是否修改成功,如图则表示成功echo $NVM_NODEJS_ORG_MIRROR 5.再次查看可安装的node版本nvm ls-remote