- // ==UserScript==
- // @name 日志表态显色补丁文字提示版
- // @namespace https://www.gamemale.com/space-uid-687897.html
- // @version 0.2
- // @description 通过添加文字直观地显示日志页面的表态详情
- // @author 瓦尼
- // @match https://www.gamemale.com/blog*
- // @icon https://www.gamemale.com/source/plugin/it618_tieclick/images/love.gif
- // @supportURL https://www.gamemale.com/thread-135135-1-1.html
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- // 用于根据颜色改变特定node的样式
- function changeStyle(node, color){
- // 给头像加上特定颜色的阴影
- node.style.boxShadow = '3px 3px 5px '+ color;
- // 改变用户名的颜色
- node.nextElementSibling.childNodes[0].style.setProperty ('color', color, 'important');
- return 0;
- }
- function showVote(){
- let avts = document.getElementsByClassName("avt");
- for (let avt of avts){
- //改变颜色
- let voteTitle = avt.childNodes[0].title;
- if( voteTitle == '震惊'){
- //changeStyle(avt,'white');
- }else if( voteTitle == '感谢'){
- changeStyle(avt,'Gold');
- }else if( voteTitle == '关心'){
- changeStyle(avt,'HotPink');
- }else if( voteTitle == '加油'){
- changeStyle(avt,'blue');
- }else if( voteTitle == '有爱'){
- changeStyle(avt,'red');
- }
- //添加文字提示
- let newElement = document.createElement("p");
- let newContent = document.createTextNode(voteTitle);
- //震惊不显示
- if( voteTitle == '震惊'){
- newContent = document.createTextNode(" ");
- }
- newElement.appendChild(newContent);
- avt.nextElementSibling.after(newElement);
- }
- console.log("执行完毕");
- }
- // 1.页面进入时触发
- showVote();
- // 2.表态内容发生改变时触发
- // 变化包括但不限于点击表态,翻页表态内容,等等
- // 监听页面变化,所有程序均在本地运行,请放心
- // 选择观察变动的节点
- const targetNode = document.getElementById('click_div');
- // 观察器配置
- const config = { attributes: false, childList: true, subtree: false };
- // 设置计数器,防止出现无限循环
- let changeCount = 0;
- // 当检测到变化时调用的回调函数
- const callback = function(){
- //执行主函数
- showVote();
- // 计数器加一
- changeCount++;
- console.log(`变化次数: ${changeCount}`);
- // 如果变化次数达到一定次,断开观察
- if (changeCount >= 100) {
- console.log('达到设定的变更次数,停止观察。');
- observer.disconnect();
- }
- };
- // 创建一个观察器实例并传入回调函数
- const observer = new MutationObserver(callback);
- // 开始观察目标节点
- // 如果不希望本地持续监听页面,请将下面这行通过添加‘//’前缀,注释掉即可
- observer.observe(targetNode, config);
- })();
复制代码 |