当前位置: 首页 > news >正文

福田企业网站优化有用吗电子商务网站建设与管理的理解

福田企业网站优化有用吗,电子商务网站建设与管理的理解,云南建设厅网站工程师,wordpress怎么做app目录 一、 引言 二、 逻辑 三、 源代码 四、 添加新脚本 五、 使用 六、 BUG 七、 优化日志 1.获取最后消息内容报错 2.对话框切换无法正常使用 一、 引言 deepseek演都不演了#xff0c;每次第一次提问就正常#xff0c;后面就开始繁忙了#xff0c;有一点阴招全…目录 一、 引言 二、 逻辑 三、 源代码 四、  添加新脚本 五、 使用 六、 BUG 七、 优化日志 1.获取最后消息内容报错 2.对话框切换无法正常使用 一、 引言 deepseek演都不演了每次第一次提问就正常后面就开始繁忙了有一点阴招全使我们身上。 greasyfork登不上不知道是不是被墙了所以直接在这里存档。 二、 逻辑 每隔5秒使用xpath表达式匹配当前对话框的最后一个消息出现“服务器繁忙请稍后再试。”即点击重试。 三、 源代码 // UserScript // name Deepseek 服务器繁忙无限重试 // namespace http://tampermonkey.net/ // version 2025-02-11 // description 每隔5秒检测一次最后一条数据是否出现服务器繁忙出现点击重试无限循环。 // author Vdoi // match *chat.deepseek.com/* // icon https://cdn.deepseek.com/chat/icon.png // grant none // /UserScript(function() {use strict;console.log(start)let intervalId null;//重试次数let retryCount 0;// 每隔 5 秒检查一次var times 5000// 用于存储定时器 ID 的数组const intervalIds [];//记录重试按钮状态let retryStatus false;// 创建通知元素并插入到页面中function addNotification() {let notification document.getElementById(notification);if (!notification) { // 检查是否已存在通知元素notification document.createElement(div);notification.id notification;notification.style.position fixed;notification.style.left 50%;notification.style.top 50%;notification.style.transform translate(-50%, -50%);notification.style.backgroundColor #4D6BFE;notification.style.color white;notification.style.padding 15px;notification.style.borderRadius 5px;notification.style.boxShadow 0 4px 8px rgba(0, 0, 0, 0.2);notification.style.zIndex 1000;notification.style.textAlign center;notification.style.display none; // 默认隐藏document.body.appendChild(notification);}return notification;}// 显示通知的方法function showNotification(text) {//console.log(显示提示)const notification document.getElementById(notification);notification.textContent text;notification.style.display block;setTimeout(() {notification.style.display none;}, 3000); // 3秒后隐藏通知}//自动重试按钮点击事件function retryButtonClick() {var xpath //div[idretry]/span;var elementResult document.evaluate(xpath,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);var clickElement elementResult.singleNodeValue;clickElement.addEventListener(click, function() {//console.log(点击)const xpathExpression //div[idretry];const result document.evaluate(xpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const newButtonDiv result.singleNodeValue;var text times 毫秒后开启自动重试if (clickElement.textContent 打开自动重试) {console.log(已开启自动重试)retryStatus true;showNotification(text); // 显示通知// 设置背景颜色newButtonDiv.style.backgroundColor #4D6BFE;// 设置文字颜色为白色newButtonDiv.style.color white;//开启之前清除自动重试的定时器intervalIds.forEach((id) {clearInterval(id);});//开启定时器clickElement.textContent 关闭自动重试;intervalId setInterval(() checkAndClick(times), times);intervalIds.push(intervalId);} else {console.log(已关闭自动重试)retryStatus false;text 已关闭自动重试showNotification(text); // 显示通知// 设置背景颜色newButtonDiv.style.backgroundColor white;// 设置文字颜色为白色newButtonDiv.style.color #4D6BFE;// 如果定时器已启动则清除它并更新按钮文本//clearInterval(intervalId);//intervalId null;// 遍历数组清除每个定时器intervalIds.forEach((id) {clearInterval(id);});clickElement.textContent 打开自动重试;}});}//增加自动重试按钮function addButton() {const xpathExpression //span[contains(text(),深度思考)]/../../div[2];const result document.evaluate(xpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const targetElement result.singleNodeValue;//console.log(增加, targetElement)if (targetElement) {// 创建要插入的 div 元素按钮const newButtonDiv document.createElement(div);newButtonDiv.setAttribute(class, ds-button ds-button--primary d9f56c96);newButtonDiv.setAttribute(id, retry);//未开启白底蓝字关闭蓝底白字var backgroundColor white;var color #4D6BFEvar textContent 打开自动重试if (retryStatus){backgroundColor #4D6BFE;color whitetextContent 关闭自动重试}// 设置背景颜色newButtonDiv.style.backgroundColor backgroundColor;// 设置文字颜色为白色newButtonDiv.style.color color;// 创建内部的 span 元素const buttonTextSpan document.createElement(span);buttonTextSpan.setAttribute(class, ad0c98fd);buttonTextSpan.textContent textContent;// 将 span 元素添加到按钮 div 中newButtonDiv.appendChild(buttonTextSpan);// 在目标元素后面插入新按钮元素console.log(增加)targetElement.parentNode.insertBefore(newButtonDiv, targetElement.nextSibling);//targetElement.appendChild(newButtonDiv);}}//当前页面最后消息function lastNews(){// 定义 XPath 表达式const xpathExpression //*[idroot]/div/div[2]/div[2]/div/div[2]/div/div/div[1]/div[last()]/div[classds-markdown ds-markdown--block]//p;let flag false// 使用 document.evaluate() 方法执行 XPath 查询const result document.evaluate(xpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const targetElement result.singleNodeValue;//增加空判断if (targetElement){console.log(targetElement.textContent)if (targetElement.textContent 服务器繁忙请稍后再试。) {flag true;}}return flag;}//点击重试function clickRe(){const exists lastNews()if (exists) {console.log(检测到服务器繁忙提示尝试点击按钮...);// 定义用于定位按钮的 XPath 表达式const buttonXpathExpression //*[idroot]/div/div[2]/div[2]/div/div[2]/div/div/div[1]/div[last()]//div[2]/div[classds-icon];// 执行 XPath 查询以获取按钮元素const buttonResult document.evaluate(buttonXpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const buttonToClick buttonResult.singleNodeValue;if (buttonToClick) {buttonToClick.click();console.log(按钮已点击);var text 次重试;showNotification(text)} else {console.log(未找到要点击的按钮);}}}//重试次数function getreCount(){//重试次数const xpathCount //*[idroot]/div/div[2]/div[2]/div/div[2]/div/div/div[1]/div[last()]/div[classds-flex]/div[classds-flex]/div[2]const countResult document.evaluate(xpathCount,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const countElement countResult.singleNodeValue;if (countElement){const count countElement.textContent;console.log(重试文本 count)const parts count.split( / );const numberBeforeSlash parseInt(parts[0], 10);console.log(重试次数 numberBeforeSlash);}}//检查等待加载函数function checkDsLoadingElementExists() {const xpathExpression //*[idroot]//div[contains(class,ds-loading)];const result document.evaluate(xpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const loadingElement result.singleNodeValue;return Boolean(loadingElement);}// 定时重试函数function checkAndClick(times) {console.log(每隔 times 毫秒检查一次)//重试次数getreCount()//是否含有加载元素const exists checkDsLoadingElementExists();const exists2 lastNews()if (exists) {console.log(找到了包含 ds - loading 类的元素。);} else{if (exists2){console.log(未找到了包含 ds - loading 类的元素。);//点击重试clickRe();//增加重试次数retryCount;//显示提示var text 已重试 retryCount 次showNotification(text)}}console.log()}//检查按钮存在function checkButton(times){//console.log(times 毫秒检查一次重试按钮是否存在)const xpath //span[contains(text(),自动重试)];const result document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);if (result.singleNodeValue null) {//增加按钮addButton()//增加点击事件retryButtonClick()}}//新对话框点击事件function clickNewButton(){var xpath //div[text()开启新对话];var elementResult document.evaluate(xpath,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);var clickElement elementResult.singleNodeValue;if (clickElement){clickElement.addEventListener(click, function() {console.log(开启新对话)setTimeout(() {checkButton(0)}, 1000);})}}function clickNewButton2(){var xpath //span[text()开启新对话];var elementResult document.evaluate(xpath,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);var clickElement elementResult.singleNodeValue;if (clickElement){clickElement.addEventListener(click, function() {console.log(开启新对话2)setTimeout(() {checkButton(0)}, 1000);})}}//加载完成window.onload function() {// 页面所有资源加载完成后执行的代码console.log(页面所有资源加载完成后执行的代码)//增加按钮addButton()//为按钮增加点击事件retryButtonClick()//增加提示addNotification()//检测按钮变化//clickNewButton()//clickNewButton2()//定时检查重试按钮是否存在setInterval(() checkButton(times), times);}})(); 四、  添加新脚本 在任意网页中打开油猴脚本菜单 保存打开deepseek网页出现自动重试按钮即可。 五、 使用 点击打开或关闭自动重试会出现相应提示框 六、 BUG 已知BUG 1. 在开启重试过程中切换多个对话框可能会无法结束建议只在当前对话框中使用 2.在新对话与历史对话框中切换自动重试功能无法正常关闭 3.在新对话与历史对话框中切换自动重试按钮没有实时改变状态一直是“打开自动重试” 对话框切换导致的问题已解决可能还有我没遇到的情况后面再慢慢优化吧。 七、 优化日志 1.获取最后消息内容报错 编号 ERROR-2025021301-LAST_MESSAGE_FETCH 时间 2025-02-13 17:00:21 图例 描述 在尝试获取聊天记录或消息列表中的最后一条消息时由于未事先判断目标元素是否存在直接访问该元素导致程序抛出异常。 修改说明 增加空判断元素存在再输出。 原代码 //当前页面最后消息function lastNews(){// 定义 XPath 表达式const xpathExpression //*[idroot]/div/div[2]/div[2]/div/div[2]/div/div/div[1]/div[last()]/div[classds-markdown ds-markdown--block]//p;let flag false// 使用 document.evaluate() 方法执行 XPath 查询const result document.evaluate(xpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const targetElement result.singleNodeValue;console.log(targetElement.textContent)if (targetElement targetElement.textContent 服务器繁忙请稍后再试。) {flag true;}return flag;} 更改代码 //当前页面最后消息function lastNews(){// 定义 XPath 表达式const xpathExpression //*[idroot]/div/div[2]/div[2]/div/div[2]/div/div/div[1]/div[last()]/div[classds-markdown ds-markdown--block]//p;let flag false// 使用 document.evaluate() 方法执行 XPath 查询const result document.evaluate(xpathExpression,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const targetElement result.singleNodeValue;//增加空判断if (targetElement){console.log(targetElement.textContent)if (targetElement.textContent 服务器繁忙请稍后再试。) {flag true;}}return flag;} 对比 2.对话框切换无法正常使用 编号 ERROR - 2025021401 - DIALOG_SWITCH_FAILURE 时间 2025-02-14 10:45:01 描述 在开启重试后切换对话框可能会导致重试逻辑对应的元素或状态在新对话框中丢失或者错乱从而使得重试无法正常结束在新对话和历史对话框之间进行切换操作时自动重试功能的关闭变得异常困难。点击关闭自动重试按钮后系统毫无反应重试任务会继续按照既定的时间间隔不断执行不受用户关闭操作的控制在新对话与历史对话框之间切换的过程中自动重试按钮的状态未能实时更新。无论实际的自动重试功能是处于开启还是关闭状态按钮始终显示为 “打开自动重试”这使得用户无法从按钮状态直观地了解当前重试功能的实际运行情况容易导致误操作。 修改说明 实时新增按钮后绑定重试事件增加全局变量重试状态首次新增按钮样式与该状态一致定时器存放至数组每次开启之前先清除该数组。 代码对比
http://www.w-s-a.com/news/281280/

相关文章:

  • 株洲专业建设网站免费cms内容管理系统
  • 网上建立网站赚钱网站建设方案书纯文字
  • 专业网站设计哪家好it外包合同模板
  • 个人网站备案都需要什么中小企业服务网
  • 佛山网站建设哪个在公司网站投简历该怎么做
  • 八戒网站做推广老域名全部失效请拿笔记好
  • iss服务器网站建设甘肃建设厅网站执业注册中心
  • 域名访问网站 过程网站 免费 托管运营
  • 下单的网站建设教程wordpress php7.1
  • 爱网站查询怎么做网站的图片跳转
  • 阿里云建站百度收录吗北京的设计公司排名
  • 网站制作方案包含哪些内容布吉网站建设方案
  • 吉林省建设安全信息网站宜宾市建设工程质量监督站网站
  • 镇江网站建设远航网络帝国cms 网站地图 自定义
  • 金融网站模板源代码net网站是国际域名吗
  • 北京高端网站建设价格企业网络托管公司
  • 规范门户网站建设没有网站可以做域名解析吗
  • pc 手机网站源码织梦网站修改教程视频教程
  • 江苏省建设厅副厅长网站济南网络建站模板
  • 工信部网站备案举报做网站竞争大吗
  • 网站建设经费管理注册了域名怎么做网站
  • 哪个着陆页网站福田做网站的公司
  • 网站备案完成后该如何做宁波公司网站建设价格
  • 标识标牌网站怎么做手机网站开发session
  • 怎样建设网站是什么样的广州做和改版网站的公司
  • 世界网站制作帮助做职业规划的网站
  • wordpress 查看站点ppt素材大全免费图片
  • 网站做弹幕广告有什么兼职做it的网站
  • 什么公司做网站出名广州做外贸网站公司
  • 源码网站取名企业网站怎么做百度