// ==UserScript== // @name 生财有术官网页面优化 // @namespace http://tampermonkey.net/ // @version 1.2 // @description 优化生财有术官网页面显示 // @author 骄阳 // @match https://scys.com/home* // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; // 定义修改标签属性的函数 function modifyStyles() { // 修改class="container"的max-width属性为1000px var containers = document.querySelectorAll('.container'); containers.forEach(function(container) { container.style.maxWidth = '1000px'; }); // 修改class="left"的max-width属性为1000px var lefts = document.querySelectorAll('.left'); lefts.forEach(function(left) { left.style.maxWidth = '1000px'; }); // 修改class="streamline"的max-width属性为1000px var streamlines = document.querySelectorAll('.streamline'); streamlines.forEach(function(streamline) { console.log("streamline.style.maxWidth:"+streamline.style.maxWidth) streamline.style.maxWidth = '1000px'; }); // 修改class="contentArticle"的max-width属性为800px var contentArticles = document.querySelectorAll('.contentArticle'); contentArticles.forEach(function(contentArticle) { contentArticle.style.maxWidth = '800px'; }); // 修改class="first-modal"的max-width属性为300px var firstmodal = document.querySelector('.first-modal'); firstmodal.style.maxWidth = '276px'; // 修改class="second-modal"的width属性为300px var secondmodal = document.querySelector('.second-modal'); secondmodal.style.width = '296px'; // 修改class="third-modal"的width属性为300px var thirdmodal = document.querySelector('.third-modal'); thirdmodal.style.width = '308px'; // 修改class="fouth-modal"的width属性为300px var fouthmodal = document.querySelector('.fouth-modal'); fouthmodal.style.width = '190px'; // 修改class="card"的width属性为300px var cards = document.querySelectorAll('div.third-hot>div.card'); cards.forEach(function(card) { card.style.width = '80px'; }); } // 使用MutationObserver监听class属性的变化 function observeClassChanges() { var observer = new MutationObserver(function(mutations) { console.log("233") mutations.forEach(function(mutation) { if (mutation.type === 'attributes' && mutation.attributeName === 'class') { // 确保mutation.target与预期的选择器匹配 console.log("23311") var isTargetItem = mutation.target.matches && mutation.target.matches('div.bottom-pagination > div > div.item'); console.log("233234") console.log(isTargetItem) if (isTargetItem) { // 使用setTimeout增加延迟执行 setTimeout(function() { console.log("modifyStyles"); modifyStyles(); addDoubleClickListener(); addHoverListener(); // 此处可以添加更多的样式修改操作 }, 1000); // 数字0表示延迟到当前执行栈清空之后执行 console.log("modifyStyles end") } } }); }); // 配置MutationObserver观察的节点和属性 var config = { attributes: true, // 观察属性变动 childList: false, // 不观察子节点的增减 subtree: true // 观察整个文档树 }; // 开始观察整个文档树中的所有节点 observer.observe(document, config); } // 为特定的元素添加双击事件监听器 function addDoubleClickListener() { // 获取所有满足条件的span元素 var dates = document.querySelectorAll('div.left > div.content > div.streamline > div > div.date > span'); // 为每个span元素添加双击事件监听器 dates.forEach(function(span) { span.addEventListener('dblclick', function() { // 获取span的父级元素中的contentArticle的div var contentArticleDiv = span.closest('div.streamline').querySelector('div.contentArticle > div'); // 检查是否存在对应的contentArticle的div if (contentArticleDiv) { // 复制contentArticle的div内容 var contentToCopy = contentArticleDiv.innerText || contentArticleDiv.textContent; // 使用浏览器的execCommand方法将内容复制到剪贴板 if (document.queryCommandSupported && document.queryCommandSupported('copy')) { var textarea = document.createElement('textarea'); textarea.textContent = contentToCopy.replaceAll("​","").replaceAll("​","").trim(); textarea.style.position = 'fixed'; // Prevent scrolling document.body.appendChild(textarea); textarea.select(); try { var successful = document.execCommand('copy'); var msg = successful ? 'successful' : 'unsuccessful'; console.log('Copying text command was ' + msg); } catch (err) { console.error('Unable to copy: ', err); } document.body.removeChild(textarea); } } }); }); } // 为特定的元素添加鼠标悬停事件 function addHoverListener() { // 获取所有满足条件的span元素 var dates = document.querySelectorAll('div.left > div.content > div.streamline > div > div.date > span'); // 为每个span元素设置CSS伪类:hover样式 dates.forEach(function(span) { span.addEventListener('mouseenter', function() { span.style.cursor = 'pointer'; // 设置鼠标悬停时鼠标样式为小手 }); span.addEventListener('mouseleave', function() { span.style.cursor = 'auto'; // 鼠标离开时恢复默认鼠标样式 }); // 添加title提示 span.title = '双击复制标题'; }); } // 创建悬浮按钮的函数 function createFloatingButtons() { // 创建“优化页面”按钮 var optimizeButton = document.createElement('button'); optimizeButton.innerText = '优化页面'; optimizeButton.style.cssText = 'position: fixed; top: 50%; left: 20px; z-index: 1000;background-color:#3d76fb;height:40px;font-size:16px;'; optimizeButton.addEventListener('click', modifyStyles); // 创建“隐藏按钮”按钮 var hideButton = document.createElement('button'); hideButton.innerText = '隐藏按钮'; hideButton.style.cssText = 'position: fixed; top: 55%; left: 20px; z-index: 1000;;background-color:#3d76fb;height:40px;font-size:16px;'; hideButton.addEventListener('click', function() { optimizeButton.remove(); hideButton.remove(); }); // 将按钮添加到页面中 document.body.appendChild(optimizeButton); document.body.appendChild(hideButton); } // 页面加载完成后执行 window.addEventListener('load', function() { //createFloatingButtons(); setTimeout(function() { console.log("modifyStyles"); modifyStyles(); addDoubleClickListener(); addHoverListener(); // 此处可以添加更多的样式修改操作 }, 1000); // 数字0表示延迟到当前执行栈清空之后执行 observeClassChanges(); // 添加点击事件监听器 }); })();