北海市住房和城乡建设局网站上海seo公司
2026/1/11 8:58:16 网站建设 项目流程
北海市住房和城乡建设局网站,上海seo公司,新手做网站需要什么,手机上登录qq网页版原创#xff0c;原因是不想配油猴#xff0c;之前的脚本又太老#xff0c;就自己写了一个。 一、脚本 1.内容 // 一键批量删除说说#xff08;支持自定义页面数量#xff09; (() {const delay 2000;let currentIndex 0;let listItems [];let dialogObserver nul…原创原因是不想配油猴之前的脚本又太老就自己写了一个。一、脚本1.内容// 一键批量删除说说支持自定义页面数量((){constdelay2000;letcurrentIndex0;letlistItems[];letdialogObservernull;letisProcessingtrue;lettotalPagesToDelete0;letpagesDeleted0;// 1. 询问用户要删除的页面数量functionaskPageCount(){constinputprompt(请输入要连续删除的页面数量请输入数字,5);if(inputnull){console.log(用户取消了操作);returnnull;}constpageCountparseInt(input);if(isNaN(pageCount)||pageCount0){alert(请输入有效的正数);returnnull;}returnpageCount;}// 2. 自动查找iframefunctionfindIframe(){// 尝试多种方式找到包含日志的iframeletiframedocument.querySelector(iframe.app_canvas_frame)||document.querySelector(iframe[src*app.qzone])||document.querySelector(iframe[src*qzone]);if(!iframe){// 遍历所有iframe查找包含#msgList的constiframesdocument.querySelectorAll(iframe);for(letframeofiframes){try{constdocframe.contentDocument;if(docdoc.querySelector(#msgList)){iframeframe;break;}}catch(e){// 跳过跨域iframe}}}if(!iframe){console.log(未找到包含日志的iframe);returnnull;}try{returniframe.contentDocument||iframe.contentWindow.document;}catch(e){console.log(无法访问iframe内容);returnnull;}}// 3. 自动点击确认对话框functionsetupDialogMonitor(){if(dialogObserver)return;dialogObservernewMutationObserver((mutations){for(letmutationofmutations){if(mutation.addedNodes.length0){for(letnodeofmutation.addedNodes){if(node.nodeType1(node.matches(.qz_dialog_layer)||node.querySelector?.(.qz_dialog_layer))){console.log(检测到确认对话框);setTimeout((){constconfirmBtndocument.querySelector(a[title点击这里确认]);if(confirmBtn){confirmBtn.click();console.log(已点击确认按钮);}},300);}}}}});dialogObserver.observe(document.body,{childList:true,subtree:true});}// 4. 查找分页控件并跳转到上一页functiongoToPreviousPage(iframeDoc){constpageriframeDoc.querySelector(p.mod_pagenav_main);if(!pager){console.log(未找到分页控件);returnfalse;}// 获取pager的所有子元素包括a和spanconstchildrenArray.from(pager.children);if(children.length3){console.log(分页元素不足可能是最后一页);returnfalse;}// 倒数第三个元素因为倒数第一是下一页倒数第二是当前页constprevPageElementchildren[children.length-3];if(!prevPageElement||prevPageElement.tagName!A){console.log(未找到上一页链接);returnfalse;}// 检查是否是可点击的链接不是disabled状态if(prevPageElement.classList.contains(mod_pagenav_disable)||prevPageElement.style.pointerEventsnone){console.log(上一页不可点击);returnfalse;}console.log(正在跳转到上一页...);prevPageElement.click();returntrue;}// 5. 处理单条说说functionprocessItem(li){returnnewPromise((resolve){consttriggerli.querySelector(.dropdown-trigger);if(!trigger){resolve(false);return;}// 滚动到元素li.scrollIntoView({behavior:smooth,block:center});setTimeout((){trigger.click();setTimeout((){constdeleteBtnli.querySelector(.del.del_btn.author_display);if(deleteBtn){deleteBtn.click();console.log(已点击删除按钮 (${currentIndex1}/${listItems.length}));// 等待确认对话框被自动处理setTimeout(resolve,1000);}else{resolve(false);}},500);},500);});}// 6. 显示进度信息functionshowProgress(){console.log(进度:${pagesDeleted}/${totalPagesToDelete}页面);console.log(剩余:${totalPagesToDelete-pagesDeleted}个页面);}// 7. 处理单个页面asyncfunctionprocessPage(){constiframeDocfindIframe();if(!iframeDoc){console.log(无法访问iframe停止处理);isProcessingfalse;returnfalse;}listItemsiframeDoc.querySelectorAll(#msgList li.feed.feed_private);if(listItems.length0){console.log(当前页面没有说说尝试跳转到上一页);// 尝试跳转到上一页if(goToPreviousPage(iframeDoc)){console.log(等待新页面加载...);awaitnewPromise(resolvesetTimeout(resolve,3000));returntrue;// 继续处理}else{console.log(没有更多页面可处理);returnfalse;// 停止处理}}console.log(当前页面找到${listItems.length}条说说开始删除...);// 启动对话框监视器setupDialogMonitor();// 处理当前页所有说说for(leti0;ilistItems.length;i){currentIndexi;console.log(处理第${i1}/${listItems.length}条说说...);constsuccessawaitprocessItem(listItems[i]);if(!success){console.log(第${i1}条说说处理失败跳过);}// 如果不是最后一条等待延迟if(ilistItems.length-1){console.log(等待${delay/1000}秒...);awaitnewPromise(resolvesetTimeout(resolve,delay));}}console.log(当前页面所有说说已删除);pagesDeleted;showProgress();// 等待一小段时间让页面稳定awaitnewPromise(resolvesetTimeout(resolve,1000));// 检查是否已达到指定的页面数量if(pagesDeletedtotalPagesToDelete){console.log(已达到指定的${totalPagesToDelete}个页面停止处理);returnfalse;}// 当前页处理完成后跳转到上一页returngoToPreviousPage(iframeDoc);}// 8. 主处理函数 - 处理指定数量的页面asyncfunctionprocessPages(){console.log( 说说批量删除脚本 );// 询问用户要删除的页面数量totalPagesToDeleteaskPageCount();if(totalPagesToDeletenull){console.log(脚本已取消);return;}console.log(目标: 删除${totalPagesToDelete}个页面的说说);console.log(开始处理...);lethasMorePagestrue;while(hasMorePagesisProcessingpagesDeletedtotalPagesToDelete){console.log(\n 开始处理第${pagesDeleted1}个页面 );// 处理当前页面hasMorePagesawaitprocessPage();if(hasMorePagespagesDeletedtotalPagesToDelete){console.log(等待${delay/1000}秒让新页面加载...);awaitnewPromise(resolvesetTimeout(resolve,delay*2));}}console.log(\n 处理完成 );console.log(总共处理了${pagesDeleted}个页面);console.log(目标:${totalPagesToDelete}个页面);if(pagesDeletedtotalPagesToDelete){console.log(✓ 已完成指定数量的页面删除);}else{console.log(⚠ 未完成所有指定页面可能是没有更多页面了);}// 清理if(dialogObserver){dialogObserver.disconnect();}}// 9. 立即执行processPages();// 10. 添加控制函数到全局window.pauseDeletion(){isProcessingfalse;if(dialogObserver)dialogObserver.disconnect();console.log(已暂停);};window.resumeDeletion(){isProcessingtrue;console.log(已恢复继续处理);processPages();};window.getProgress(){return{pagesDeleted,totalPagesToDelete,remaining:totalPagesToDelete-pagesDeleted,progress:totalPagesToDelete0?(pagesDeleted/totalPagesToDelete*100).toFixed(1):0};};window.showProgressInfo(){constprogressgetProgress();console.log(进度:${progress.pagesDeleted}/${progress.totalPagesToDelete}页面);console.log(剩余:${progress.remaining}个页面);console.log(完成:${progress.progress}%);};})();2.用法先打开网页版qq空间点击说说然后划到最下面点最后一页说说按 F12 打开控制台并选择 console 页面有些人应该第一次开这个控制台所以会发现不让粘帖脚本代码 —— 会有个黄色的警告有些人应该第一次开这个控制台所以会发现不让粘帖脚本代码 —— 会有个黄色的警告有些人应该第一次开这个控制台所以会发现不让粘帖脚本代码 —— 会有个黄色的警告在这里输入allow pasting然后回车。就可以粘贴脚本代码了。粘贴脚本代码并回车如果没错会出现这个让你输入删除的页面数量的提示框。它的规则是从后往前删几页。比如说我们刚才在 171 页那么我往前删 5 页删到 160 多页你就填 5然后点击确定即可。然后脚本就会自动开始运行

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询