// ==UserScript==
// @name 拼多多跨境(Temu)弹窗屏蔽
// @version 1.1
// @description 用于屏蔽拼多多跨境卖家平台的弹窗-jquery重构
// @author linying
// @match *://kuajing.pinduoduo.com/*
// @match *://seller.kuajingmaihuo.com/*
// @match *://kuajingboss.com/*
// @match *://agentseller.temu.com/*
// @exclude */login*
// @exclude */settle/site-main*
// @exclude */questionnaire?surveyId=*
// @exclude */settle/seller-login?redirectUrl=*
// @exclude */agentseller*.temu.com/main/authentication?redirectUrl=*
// @exclude */agentseller*.temu.com/mmsos/online-shipping-result.html*
// @icon https://gitlab.com/linying23333/green-service-center-temu-or-pinduoduokuajing-2024/raw/main/icon.svg
// @supportURL https://gitlab.com/linying23333/green-service-center-temu-or-pinduoduokuajing-2024
// @homepage https://github.com/linying2333
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js
// @run-at document-idle
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// @grant GM.setValue
// @grant GM.getValue
// @grant GM.deleteValue
// @grant GM_registerMenuCommand
// @namespace https://greasyfork.org/users/1307848
// ==/UserScript==
// @require https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js
// @icon 来自 https://www.iconfont.cn/ 如果侵犯您的权利请与我沟通
// @note 更新日志&常见问题解决:https://gitlab.com/linying23333/green-service-center-temu-or-pinduoduokuajing-2024/raw/main/Readme.md
// @note 本js用户脚本版权归linying所有,仅供研究学习,禁止以任何形式倒卖
//于北京时间 2024/06/10 03:33:11 使用通义千问2.5+ChatGPT3.5以jQuery 2.2.4重构
'use strict';
this.$ = this.jQuery = jQuery.noConflict(true);
// 防止网页与使用的jquery.2.2.4.min.js发生冲突
/*
防止代码因其他原因被执行多次
这段代码出自 Via轻插件,作者谷花泰
*/
var key = encodeURIComponent('拼多多跨境(Temu)弹窗屏蔽');
if (window[key]) return;
window[key] = true;
var MessagePrefix = '来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示:\n';
// 检查配置文件版本
(function() {
var configVersion = window.localStorage.getItem('setting_Config_Version');
var MessagePrefix = '来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示:\n配置文件数据版本';
if (configVersion === null || configVersion === '') {
console.log(MessagePrefix + '未找到');
} else if (configVersion < '2') {
console.log(MessagePrefix + '过低!可能导致运行错误!建议在设置菜单中重置参数');
} else if (configVersion > '2') {
console.log(MessagePrefix + '过高!可能导致运行错误!建议在设置菜单中重置参数');
} else if (configVersion === '2') {
console.log(MessagePrefix + '为' + configVersion);
} else {
console.log(MessagePrefix + '不是合规的数字');
}
})();
// 初始化默认数据库
var value = [
// 参数需要根据您的电脑加载速度而定,切勿无脑调低或者调高
// 基础设置
// 设置配置文件版本(为未来预留)
{name: 'setting_Config_Version', value: '2'},
// 启动后进行删除的等待时间:
// 值设置为 0 不启用,默认推荐值为4600
// 单位毫秒,1秒 = 1000毫秒
{name: 'setting_Start_Wait_Time', value: '4600'},
// 是否展示调价菜单
// 默认true(开启),使用false(关闭)
{name: 'setting_Show_Price_Menu', value: 'true'},
// 快速模式设置
// 快速删除模式的删除间隔时间:
// 默认推荐值为100
// 单位毫秒,1秒 = 1000毫秒
{name: 'setting_Fast_Remove_Interval_Time', value: '1'},
// 快速删除持续删除时间
// 默认推荐值为8000
// 单位毫秒,1秒 = 1000毫秒
{name: 'setting_Fast_Remove_Duration', value: '1'}, // 'setting_Fast_Remove_Interval_Time'与'setting_Fast_Remove_Duration'同时设置为 1 不启用
// 是否弹出快速删除结束提示框
// 默认false(关闭),使用true(开启)
{name: 'setting_Show_Fast_Remove_Stopped_Alert', value: 'false'},
// 手动清除按钮设置
// 设置是否添加手动清除按钮
// 默认true(开启),使用false(关闭)
{name: 'setting_Add_Manual_Clear_Button', value: 'true'},
// 设置按钮加载位置默认值
// 位置从浏览器屏幕左上角开始计算,X轴+1则向右移动,Y轴+1则向下移动
// 参数需要带单位(受支持的单位 百分比"%",像素点"px")
// 按钮的X轴(纵向)值
{name: 'setting_Add_Manual_Clear_Button_X', value: '30%'},
// 按钮的Y轴(纵向)值
{name: 'setting_Add_Manual_Clear_Button_Y', value: '92%'},
// 在多长时间内快速点击3次移动按钮打开设置
// 默认推荐值为400
// 单位毫秒,1秒 = 1000毫秒
{name: 'setting_Quickly_Click_3Times_To_Open_Settings_Check_Time', value: '500'},
// 是否在加载时自动启用元素反转
// 默认false(关闭),使用true(开启)
{name: 'setting_Inversion_Color', value: 'false'},
// 是否在加载时自动启用元素反转
// 默认false(关闭),使用true(开启)
{name: 'setting_Inversion_Color', value: 'false'},
// 调试模式日志输出
// 默认false(关闭),使用true(开启)
{name: 'setting_Print_DebugMode_Log', value: 'false'}
];
$.each(value, function(index, Event) {
var setValue = Event.value; // 先获取原始值
// 特别处理布尔类型的值
if (Event.value === 'true' || Event.value === 'false') {
setValue = Event.value === 'true';
}
// 如果没有对应的配置项,则为油猴存储添加配置项,确保值为期望的类型
if (!GM_getValue(Event.name)) {GM_setValue(Event.name, setValue)};
});
// 初始化变量
var Button_X = GM_getValue('setting_Add_Manual_Clear_Button_X'), Button_Y = GM_getValue('setting_Add_Manual_Clear_Button_Y');
// 创建 GreaseMonkey 菜单
(function CreateMenu() {
GM_registerMenuCommand('⚙️ 设置', LoadSettingsPanel);
GM_registerMenuCommand('🎨⇆ 颜色反转', toggleColorInversion);
var Status = GM_getValue('setting_Print_DebugMode_Log');
GM_registerMenuCommand('🛠️ 打印控制台调试日志状态切换 | 首次加载状态:' + Status, () => {
// 先进行状态切换
Status = !Status
// 将字符串'true','false'转换为布尔值'true','false'
let boolValue = (Status === 'true') ? true : (Status === 'false') ? false : Status;
GM_setValue('setting_Print_DebugMode_Log', boolValue);
// 提示刷新网页使其生效
alert('打印调试日志状态已经更新为' + boolValue + '\n请手动刷新网页使其油猴菜单文字刷新');
});
})();
// 全局定义是否打印日志调用函数
function log(message) {
if (GM_getValue('setting_Print_DebugMode_Log')) {
console.log(MessagePrefix + message);
}
}
// 启动时检查并提示调试模式状态
(function checkDebugModeStatus() {
var debugMode = GM_getValue('setting_Print_DebugMode_Log');
console.log(`当前 Debug 模式已设置为: ${debugMode}, 调试日志${debugMode ? '已' : '未'}启用.`);
})();
// 按钮处理部分
// 检查是否启用该部分
if (GM_getValue('setting_Add_Manual_Clear_Button')) {
(function() {
// 创建新的div并设置属性
var $div = $('<div>', {
id: 'js_button_div',
css: {
cssText: 'z-index: 2147483648 !important;', // 在css对象中添加cssText
position: 'fixed',
top: GM_getValue('setting_Add_Manual_Clear_Button_Y'),
left: GM_getValue('setting_Add_Manual_Clear_Button_X'),
'-webkit-user-select': 'none', /* 对于Webkit和Mozilla浏览器,IE浏览器应使用'unselectable' */
'-moz-user-select': 'none', /* 对于早期的Firefox */
'-ms-user-select': 'none', /* 对于早期的Chrome和Safari */
'user-select': 'none' /* IE 10+ */
}
});
// 添加div到body之后
$('body').after($div);
// 创建移动按钮
var $eventMoveButton = $('<button>', {
id: 'js_MoveButton',
text: '🔧',
css: {'cursor': 'move'}
}).appendTo($div);
// 创建清除按钮
var $cleanButton = $('<button>', {
id: 'js_CleanButton',
text: '清除弹窗!',
css: {'cursor': 'pointer'},
click: function() {
log('手动清除按钮被点击');
removeElements();
alert('已经执行清除');
}
}).appendTo($div);
var $InversionColorButton = $('<button>', {
id: 'js_InversionColorButton',
text: '🎨⇆',
click: function() {
log('颜色反转按钮被点击');
toggleColorInversion();
}
});
// 设置按钮样式
$InversionColorButton.css({
'cursor': 'pointer' // 鼠标悬停时显示手型
});
// 将按钮添加到id为'js_button_div'的div中
$('#js_button_div').append($InversionColorButton);
// 初始化按钮功能
var isDraggable = false;
// 拖动逻辑
$('#js_MoveButton').on('mousedown', function(mouseDownEvent) {
if (!isDraggable) return;
function onMouseMove(mouseMoveEvent) {
var newX = mouseMoveEvent.clientX;
var newY = mouseMoveEvent.clientY;
$div.css({left: newX, top: newY});
}
$(document).on('mousemove', onMouseMove).one('mouseup', function() {
$(document).off('mousemove', onMouseMove);
log("最终位置:(X: " + $div.css('left') + ", Y: " + $div.css('top') + ")");
// 更新存储值
Button_X = $div.css('left');
Button_Y = $div.css('top');
// 检查并更新可能存在的输入框
if ($('#js_Button_X').length) $('#js_Button_X').val($div.css('left'));
if ($('#js_Button_Y').length) $('#js_Button_Y').val($div.css('top'));
});
});
// 定义变量
var clickCount = 0;
var clickTimer;
// 清除点击计数的函数
function clearClickCount() {
clickCount = 0;
clearTimeout(clickTimer);
}
// 添加连续点击三次的逻辑
$('#js_MoveButton').on('click', function(event) {
// 切换拖动状态
isDraggable = !isDraggable;
$(this).text(isDraggable ? '📝' : '🔧');
// 增加点击计数
clickCount++;
// 清除之前的定时器,并设置新的定时器
clearTimeout(clickTimer);
clickTimer = setTimeout(function() {
// 如果在指定时间内(例如 X 毫秒)发生了三次点击
if (clickCount >= 3) {
$('#js_MoveButton').text('⚙');
log('连续点击了三次!为您打开参数设置');
LoadSettingsPanel(); // 假设 LoadSettingsPanel 函数已定义
// 重置点击计数
clearClickCount();
} else {
// 否则,只重置点击计数
clearClickCount();
}
}, GM_getValue('setting_Quickly_Click_3Times_To_Open_Settings_Check_Time')); // 使用存储的检查时间
});
})();
}
function toggleColorInversion() {
var $styleElement = $('#InversionColor');
if ($styleElement.length === 0) {
// 创建一个新的style元素
var $style = $('<style>')
.attr('id', 'InversionColor')
.html('body { filter: invert(100%) !important; }');
// 将元素添加到head中
$('head').append($style);
} else {
// 如果元素已经存在,则移除它以关闭颜色反转
$styleElement.remove();
}
}
// 如果设置了默认颜色反转则调用函数
if (GM_getValue('setting_Inversion_Color')) {toggleColorInversion();}
// 插入参数设置面板
function LoadSettingsPanel() {
if ($('#js_info').length){
return; // 发现已打开,退出函数
}
// 读取列表获取值
function getDefaultValue(name) {
for (const item of value) {
if (item.name === name) {
return item.value;
}
}
return "Not found";
}
// 直接注入html
insertModalDivs(`
<h1 style="margin: 0; padding: 0;">设置参数</h1>
<div style="margin-top: 5px; margin-bottom: 5px; color: #f00;">
<p style="margin: 0; padding: 0;">注意前后不要有空格,填写错误会导致运行错误</p>
<p style="margin: 0; padding: 0;">时间值默认单位 ms (毫秒),1 s(秒) = 1000 ms(毫秒)</p>
<p style="margin: 0; padding: 0;">功能开关:使用 true (开启),使用 false (关闭)</p>
</div>
<div style="margin: 0; padding: 0;">
<p style="margin: 0; padding: 0;">启动后进行删除的等待时间:</p>
<input type="text"
class="js_setting_input"
style="background-color: #808080; margin: 3px 0; padding: 2px;"
placeholder="默认值:${getDefaultValue('setting_Start_Wait_Time')}"
value="${GM_getValue('setting_Start_Wait_Time')}">
</div>
<p></p>
<div style="margin: 0; padding: 0;">
<p style="margin: 0; padding: 0;">是否展示调价菜单:</p>
<input type="text"
class="js_setting_input"
style="background-color: #808080; margin: 3px 0; padding: 2px;"
placeholder="默认值:${getDefaultValue('setting_Show_Price_Menu')}"
value="${GM_getValue('setting_Show_Price_Menu')}">
</div>
<p></p>
<div style="margin: 0; padding: 0;">
<p style="margin: 0; padding: 0;">快速删除模式的删除间隔时间:</p>
<input type="text"
class="js_setting_input"
style="background-color: #808080; margin: 3px 0; padding: 2px;"
placeholder="默认值:${getDefaultValue('setting_Fast_Remove_Interval_Time')}"
value="${GM_getValue('setting_Fast_Remove_Interval_Time')}">
</div>
<div style="margin: 0; padding: 0;">
<p style="margin: 0; padding: 0;">快速删除模式的持续删除时间:</p>
<input type="text"
class="js_setting_input"
style="background-color: #808080; margin: 3px 0; padding: 2px;"
placeholder="默认值:${getDefaultValue('setting_Fast_Remove_Duration')}"
value="${GM_getValue('setting_Fast_Remove_Duration')}">
</div>
<div style="margin: 0; padding: 0;">
<p style="margin: 0; padding: 0;">是否弹出快速输出结束提示框:</p>
<input type="text"
class="js_setting_input"
style="background-color: #808080; margin: 3px 0; padding: 2px;"
placeholder="默认值:${getDefaultValue('setting_Show_Fast_Remove_Stopped_Alert')}"
value="${GM_getValue('setting_Show_Fast_Remove_Stopped_Alert')}">
</div>
<p></p>
<div style="margin: 0; padding: 0;">
<p style="margin: 0; padding: 0;">是否添加手动清除按钮:</p>
<input type="text"
class="js_setting_input"
style="background-color: #808080; margin: 3px 0; padding: 2px;"
placeholder="默认值:${getDefaultValue('setting_Add_Manual_Clear_Button')}"
value="${GM_getValue('setting_Add_Manual_Clear_Button')}">
</div>
<div style="margin: 0; padding: 0;">
<p style="margin: 0; padding: 0;">设置手动清除按钮加载位置默认值:</p>
<p style="margin: 0; padding: 0;">(受支持的单位 百分比"%",像素点"px")</p>
<p style="margin: 0; padding: 0;">按钮的X轴(纵向)值,需要带单位</p>
<input type="text"
class="js_setting_input"
id="js_Button_X"
style="background-color: #808080; margin: 3px 0; padding: 2px;"
placeholder="默认值:${getDefaultValue('setting_Add_Manual_Clear_Button_X')}"
value="${Button_X}">
<p style="margin: 0; padding: 0;">按钮的Y轴(纵向)值,需要带单位</p>
<input type="text"
class="js_setting_input"
id="js_Button_Y"
style="background-color: #808080; margin: 3px 0; padding: 2px;"
placeholder="默认值:${getDefaultValue('setting_Add_Manual_Clear_Button_Y')}"
value="${Button_Y}">
</div>
<div style="margin: 0; padding: 0;">
<p style="margin: 0; padding: 0;">在多长时间内快速点击3次移动按钮打开设置:</p>
<input type="text"
class="js_setting_input"
style="background-color: #808080; margin: 3px 0; padding: 2px;"
placeholder="默认值:${getDefaultValue('setting_Quickly_Click_3Times_To_Open_Settings_Check_Time')}"
value="${GM_getValue('setting_Quickly_Click_3Times_To_Open_Settings_Check_Time')}">
</div>
<p></p>
<div style="margin: 0; padding: 0;">
<p style="margin: 0; padding: 0;">是否在加载时启用颜色反转:</p>
<input type="text"
class="js_setting_input"
style="background-color: #808080; margin: 3px 0; padding: 2px;"
placeholder="默认值:${getDefaultValue('setting_Inversion_Color')}"
value="${GM_getValue('setting_Inversion_Color')}">
</div>
<p></p>
<div style="margin: 0; padding: 0;">
<p style="margin: 0; padding: 0;">是否打印是否控制台日志</p>
<input type="text"
class="js_setting_input"
style="background-color: #808080; margin: 3px 0; padding: 2px;"
placeholder="默认值:${getDefaultValue('setting_Print_DebugMode_Log')}"
value="${GM_getValue('setting_Print_DebugMode_Log')}">
</div>
<p></p>
<button id="js_setting_reset"
style="background-color: #808080;">重置为默认值</button>
<button id="js_setting_save"
style="background-color: #808080;">保存</button>
`);
$(document).ready(function() {
$('#js_setting_reset').on('click', function() {
value.forEach((event) => {
GM_deleteValue(event.name);
});
alert('配置项已被重置!');
});
});
$(document).ready(function() {
$('#js_setting_save').on('click', function() {
let elements = $('.js_setting_input');
let number = 10;
if (elements.length === number) {
elements.each(function(index) {
let boolValue = $(this).val() === 'true' ? true : $(this).val() === 'false' ? false : $(this).val();
GM_setValue(value[index + 1].name, boolValue); // 注意索引从1开始,跳过版本信息
log(MessagePrefix + `目前是第 ${index + 1} 个输入框,\n数据库数据名:${value[index + 1].name} 的\n值已经设置为: ${GM_getValue(value[index + 1].name)}`);
});
alert(MessagePrefix + '配置项已被保存!');
} else {
console.error(MessagePrefix + "输入框数量不符,实际数量:" + elements.length + ", 预期数量:" + number);
alert(MessagePrefix + '配置项保存失败,输入框数量不匹配!');
return; // 避免在配置未正确处理时继续执行后续逻辑
}
});
});
}
// 显示等待开始执行的提示信息
insertModalDivs(`<div><h3>${MessagePrefix}</h3><br>将会等待 ${GM_getValue('setting_Start_Wait_Time') / 1000} 秒后开始执行删除</div>`);
// 在指定延迟后开始执行
setTimeout(function() {
insertModalDivs(`<div><h3>${MessagePrefix}</h3><br>开始操作</div>`);
// 确保DOM准备就绪后立即执行remove操作
setTimeout(remove, 0);
}, GM_getValue('setting_Start_Wait_Time'));
// remove 函数的实现保持不变
function remove() {
if (document.readyState === 'loading') {
$(document).ready(startInterval);
} else {
startInterval();
}
}
let intervalId;
function startInterval() {
intervalId = setInterval(removeElements, GM_getValue('setting_Fast_Remove_Interval_Time'));
setTimeout(function() {
clearInterval(intervalId);
if (GM_getValue('setting_Fast_Remove_Interval_Time') !== GM_getValue('setting_Fast_Remove_Duration')) {
log(`${GM_getValue('setting_Fast_Remove_Duration')} 毫秒已过,停止删除操作.`);
if (GM_getValue('setting_Show_Fast_Remove_Stopped_Alert')) {
alert(`设置的循环时间 ${GM_getValue('setting_Fast_Remove_Duration')} 毫秒到了,您可以继续操作了.`);
}
} else {
log('快速模式未启用');
}
}, GM_getValue('setting_Fast_Remove_Duration'));
}
function removeElements() {
// 移除具有特定id属性的div元素(js_info)
$('div#js_info').remove();
// 查找并删除具有特定data-testid属性的div元素
$('div[data-testid="beast-core-modal"]').each(function() {
let shouldRemoveParent = true;
// 查找 modalDiv 之前的具有 data-testid="beast-core-modal-mask" 的 div 元素
let $maskDiv = $(this).prevAll('div[data-testid="beast-core-modal-mask"]').first();
// 如果GM_getValue('setting_Show_Price_Menu')为false,则直接删除元素,不检查子结构
if (!GM_getValue('setting_Show_Price_Menu')) {
$(this).remove();
return;
}
// 查找包含“切换店铺”文本的div
const $switchShopDiv = $(this).find('.layout_title__1eHi_');
if ($switchShopDiv.length && $switchShopDiv.text().trim().includes('切换店铺')) {
shouldRemoveParent = false;
}
// 检查是否有包含"调价原因"的<th>元素
const $headers = $(this).find('.TB_thead_5-109-0 .TB_th_5-109-0');
const hasReasonHeader = $headers.filter(function() {
return $(this).text().trim().includes('调价原因');
}).length > 0;
if (hasReasonHeader) {
shouldRemoveParent = false;
}
// 根据shouldRemoveParent的值执行操作
if (shouldRemoveParent) {
log('没有找到包含 "调价原因" 或 "切换店铺" 的元素');
$(this).remove();
// 删除对应的maskDiv
if ($maskDiv.length) {
$maskDiv.remove();
}
} else {
log('找到包含 "调价原因" 或 "切换店铺" 的元素');
}
});
// 延迟执行删除空div的操作
setTimeout(removeEmptyDivsAtBodyEnd, GM_getValue('setting_Start_Wait_Time') + GM_getValue('setting_Fast_Remove_Duration') + 10000);
}
function insertModalDivs(InputHTML) {
// 创建并设置模态框div
var $div = $('<div>', {
id: 'js_info',
align: 'center',
css: {
cssText: 'z-index: 2147483648 !important;', // 在css对象中添加cssText
'overflow-y': 'auto',
'max-height': '90%',
position: 'fixed',
top: '50%',
left: '50%',
transform: 'translate(-50%, -50%)',
'background-color': '#000',
color: '#fff',
padding: '10px',
border: '1px solid #ccc',
'box-shadow': '0 0 10px rgba(0, 0, 0, 0.3)'
},
html: `
<span style="position: absolute; top: -1px; right: 3px; cursor: pointer;"
onclick="document.getElementById('js_info').remove()">×</span>
${InputHTML}
`
});
// 添加div到body之后
$('body').after($div);
}
// 防抖函数实现
function debounce(func, wait) {
let timeout;
return function() {
const context = this;
const args = arguments;
clearTimeout(timeout);
timeout = setTimeout(() => func.apply(context, args), wait);
};
}
// 监听切换功能区
$('.index-module__menuBox___2aaTA').on('click', debounce(function(event) {
if ($(event.target).closest('.index-module__menuBox___2aaTA').length) {
var $mmsDescendant = $(event.target).closest('.bg-shell-theme-menu-mms');
if ($mmsDescendant.length) {
var $menuDescendant = $(event.target).closest('.index-module__menu___3Wyz- .bg-shell-theme-menu');
if ($menuDescendant.length && $mmsDescendant[0] !== $menuDescendant.parent()[0]) {
log('匹配到.index-module__menu___3Wyz- .bg-shell-theme-menu .bg-shell-theme-menu-mms下的.index-module__menu___3Wyz- .bg-shell-theme-menu的后代元素触发的点击');
var longtimelist = ['/goods/product/list', '/main/sale-manage/main'];
setTimeout(function() {
log('等待 100 毫秒,加载网址进行匹配');
var currentPath = window.location.pathname;
var time = longtimelist.includes(currentPath) ? 1400 : 960;
setTimeout(function() {
log(`已经等待 ${time} 毫秒,执行删除函数`);
removeElements();
setTimeout(CheckWebError, 1000);
}, time);
}, 100);
}
}
}
}, 1000));
// 删除尾部空div的函数
function removeEmptyDivsAtBodyEnd() {
var $lastChild = $('body').children().last();
while ($lastChild.is('div') && !$lastChild.text().trim()) {
$lastChild.remove();
$lastChild = $('body').children().last();
}
}
function CheckWebError() {
const $rootDiv = $('#root');
if (!$rootDiv.length) {
log('未找到ID为"root"的div元素');
return;
}
const commentsToFind = [
'<!--- script https://bstatic.cdnfe.com/static/main/maihuo/static/js/bgb-sc-main/runtime~main.ce42606d.js replaced by import-html-entry --->',
'<!--- script https://bstatic.cdnfe.com/static/main/maihuo/static/js/bgb-sc-main/48.209360ea.chunk.js replaced by import-html-entry --->',
'<!--- script https://bstatic.cdnfe.com/static/main/maihuo/static/js/bgb-sc-main/main.a38fe5f9.chunk.js replaced by import-html-entry --->'
];
let allCommentsFound = true;
$rootDiv.contents().each(function(index, childNode) {
if (index >= 3 || !commentsToFind.some(comment => $(childNode).text().includes(comment.trim()))) {
allCommentsFound = false;
return false; // 跳出循环
}
});
if (allCommentsFound) {
log('找到所有定义的错误注释,刷新网页');
insertModalDivs(`<p>检测到网页错误,为您刷新</p>`);
location.reload(); // 刷新页面
} else {
log('未找到所有定义的错误注释,保持原样');
}
}