Greasy Fork

Greasy Fork is available in English.

拼多多跨境(Temu)弹窗屏蔽

用于屏蔽拼多多跨境卖家平台的弹窗

当前为 2024-05-28 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         拼多多跨境(Temu)弹窗屏蔽
// @version      0.4.2
// @description  用于屏蔽拼多多跨境卖家平台的弹窗
// @author       linying
// @match        *://kuajing.pinduoduo.com/*
// @match        *://seller.kuajingmaihuo.com/*
// @match        *://kuajingboss.com/*
// @match        *://agentseller.temu.com/*
// @exclude      */login*
// @exclude      */settle/site-main*
// @icon         data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNzE2MzU2OTE5NTgzIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM2NDkiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTg2MC4wNjg1NzEgNjY2LjQyMjg1N0w3MjYuODU3MTQzIDczMS4yNDU3MTRjLTguNjg1NzE0IDQuMjA1NzE0LTE4Ljc0Mjg1NyA0LjIwNTcxNC0yNy40Mjg1NzIgMGwtMTMzLjIxMTQyOC02NC44MjI4NTdBMzEuMjk2IDMxLjI5NiAwIDAgMSA1NDguNTcxNDI5IDYzOC4yNjI4NTdWNDc3LjE2NTcxNGMwLTExLjk3NzE0MyA2Ljg1NzE0My0yMi45NDg1NzEgMTcuNjQ1NzE0LTI4LjE2bDEzMy4yMTE0MjgtNjQuODIyODU3YzguNjg1NzE0LTQuMjA1NzE0IDE4Ljc0Mjg1Ny00LjIwNTcxNCAyNy40Mjg1NzIgMGwxMzMuMjExNDI4IDY0LjgyMjg1N2MxMC43ODg1NzEgNS4yMTE0MjkgMTcuNjQ1NzE0IDE2LjE4Mjg1NyAxNy42NDU3MTUgMjguMTZ2MTYxLjA5NzE0M2MwIDExLjk3NzE0My02Ljg1NzE0MyAyMi45NDg1NzEtMTcuNjQ1NzE1IDI4LjE2eiIgZmlsbD0iI0I0RDdGRSIgcC1pZD0iMzY1MCI+PC9wYXRoPjxwYXRoIGQ9Ik03MTMuMTQyODU3IDcwMS45ODg1NzFWNTQzLjU0Mjg1N2wtMTM5LjMzNzE0My02OC41NzE0MjhNODUyLjQ4IDQ3NC45NzE0MjlMNzEzLjE0Mjg1NyA1NDMuNTQyODU3IiBmaWxsPSIjQjREN0ZFIiBwLWlkPSIzNjUxIj48L3BhdGg+PHBhdGggZD0iTTk1MC44NTcxNDMgMTQ2LjI4NTcxNEg3My4xNDI4NTdjLTEwLjA1NzE0MyAwLTE4LjI4NTcxNCA4LjIyODU3MS0xOC4yODU3MTQgMTguMjg1NzE1djYyMS43MTQyODVjMCAxMC4wNTcxNDMgOC4yMjg1NzEgMTguMjg1NzE0IDE4LjI4NTcxNCAxOC4yODU3MTVoMjA1LjcxNDI4NnY1NC44NTcxNDJjMCAxMC4wNTcxNDMgOC4yMjg1NzEgMTguMjg1NzE0IDE4LjI4NTcxNCAxOC4yODU3MTVoNDI5LjcxNDI4NmMxMC4wNTcxNDMgMCAxOC4yODU3MTQtOC4yMjg1NzEgMTguMjg1NzE0LTE4LjI4NTcxNXYtNTQuODU3MTQySDk1MC44NTcxNDNjMTAuMDU3MTQzIDAgMTguMjg1NzE0LTguMjI4NTcxIDE4LjI4NTcxNC0xOC4yODU3MTVWMTY0LjU3MTQyOWMwLTEwLjA1NzE0My04LjIyODU3MS0xOC4yODU3MTQtMTguMjg1NzE0LTE4LjI4NTcxNXpNNzA4LjU3MTQyOSA4NDEuMTQyODU3aC0zOTMuMTQyODU4di0zNi41NzE0MjhoMzkzLjE0Mjg1OHYzNi41NzE0Mjh6IG0yMjQtNzMuMTQyODU3SDkxLjQyODU3MVYxODIuODU3MTQzaDg0MS4xNDI4NTh2NTg1LjE0Mjg1N3oiIGZpbGw9IiMyNDhCRkYiIHAtaWQ9IjM2NTIiPjwvcGF0aD48cGF0aCBkPSJNMTgyLjg1NzE0MyAyNzQuMjg1NzE0aDIwMS4xNDI4NTd2MzYuNTcxNDI5SDE4Mi44NTcxNDN6IiBmaWxsPSIjQjREN0ZFIiBwLWlkPSIzNjUzIj48L3BhdGg+PHBhdGggZD0iTTQxMS40Mjg1NzEgMjM3LjcxNDI4NkgxNTUuNDI4NTcxYy01LjAyODU3MSAwLTkuMTQyODU3IDQuMTE0Mjg2LTkuMTQyODU3IDkuMTQyODU3djQ1Ny4xNDI4NTdjMCA1LjAyODU3MSA0LjExNDI4NiA5LjE0Mjg1NyA5LjE0Mjg1NyA5LjE0Mjg1N2gyNTZjNS4wMjg1NzEgMCA5LjE0Mjg1Ny00LjExNDI4NiA5LjE0Mjg1OC05LjE0Mjg1N1YyNDYuODU3MTQzYzAtNS4wMjg1NzEtNC4xMTQyODYtOS4xNDI4NTctOS4xNDI4NTgtOS4xNDI4NTd6IG0tMjI4LjU3MTQyOCAzNi41NzE0MjhoMjAxLjE0Mjg1N3YzNi41NzE0MjlIMTgyLjg1NzE0M3YtMzYuNTcxNDI5eiBtMCA0MDIuMjg1NzE1VjM0Ny40Mjg1NzFoMjAxLjE0Mjg1N3YzMjkuMTQyODU4SDE4Mi44NTcxNDN6TTg2Ny40NzQyODYgNDUyLjU3MTQyOWwtMTQ2LjI4NTcxNS03MS4yMjI4NThjLTIuNTYtMS4xODg1NzEtNS4zMDI4NTctMS44Mjg1NzEtOC4wNDU3MTQtMS44Mjg1NzFzLTUuNDg1NzE0IDAuNjQtOC4wNDU3MTQgMS44Mjg1NzFsLTE0Ni4yODU3MTQgNzEuMjIyODU4Yy02LjIxNzE0MyAzLjEwODU3MS0xMC4yNCA5LjQxNzE0My0xMC4yNCAxNi40NTcxNDJ2MTc3LjM3MTQyOWMwIDcuMDQgNC4wMjI4NTcgMTMuMzQ4NTcxIDEwLjI0IDE2LjQ1NzE0M2wxNDYuMjg1NzE0IDcxLjIyMjg1N2MyLjU2IDEuMTg4NTcxIDUuMzAyODU3IDEuODI4NTcxIDguMDQ1NzE0IDEuODI4NTcxczUuNDg1NzE0LTAuNjQgOC4wNDU3MTQtMS44Mjg1NzFsMTQ2LjI4NTcxNS03MS4yMjI4NTdjNi4zMDg1NzEtMy4wMTcxNDMgMTAuMjQtOS40MTcxNDMgMTAuMjQtMTYuNDU3MTQzVjQ2OS4wMjg1NzFjMC03LjA0LTQuMDIyODU3LTEzLjM0ODU3MS0xMC4yNC0xNi40NTcxNDJ6TTcxMy4xNDI4NTcgNDE4LjEwMjg1N2wxMDcuMjQ1NzE0IDUyLjIwNTcxNC0xMDcuNDI4NTcxIDUyLjkzNzE0M2MtMC42NC0wLjM2NTcxNC0xLjI4LTAuODIyODU3LTEuOTItMS4wOTcxNDNsLTEwNS4xNDI4NTctNTEuNzQ4NTcxTDcxMy4xNDI4NTcgNDE4LjEwMjg1N3ogbS0xMjggODIuODM0Mjg2bDEwOS43MTQyODYgNTQuMDM0Mjg2djEzMy4zOTQyODVsLTEwOS43MTQyODYtNTMuMzk0Mjg1VjUwMC45MzcxNDN6IG0xNDYuMjg1NzE0IDE4Ny40Mjg1NzFWNTU0Ljk3MTQyOWwxMDkuNzE0Mjg2LTU0LjAzNDI4NnYxMzQuMDM0Mjg2bC0xMDkuNzE0Mjg2IDUzLjM5NDI4NXoiIGZpbGw9IiMyNDhCRkYiIHAtaWQ9IjM2NTQiPjwvcGF0aD48cGF0aCBkPSJNMzQ3LjQyODU3MSA0MTEuNDI4NTcxSDIxOS40Mjg1NzFjLTEwLjA1NzE0MyAwLTE4LjI4NTcxNC04LjIyODU3MS0xOC4yODU3MTQtMTguMjg1NzE0czguMjI4NTcxLTE4LjI4NTcxNCAxOC4yODU3MTQtMTguMjg1NzE0aDEyOGMxMC4wNTcxNDMgMCAxOC4yODU3MTQgOC4yMjg1NzEgMTguMjg1NzE1IDE4LjI4NTcxNHMtOC4yMjg1NzEgMTguMjg1NzE0LTE4LjI4NTcxNSAxOC4yODU3MTR6TTg1OS40Mjg1NzEgMjkyLjU3MTQyOUg0ODQuNTcxNDI5Yy0xMC4wNTcxNDMgMC0xOC4yODU3MTQtOC4yMjg1NzEtMTguMjg1NzE1LTE4LjI4NTcxNXM4LjIyODU3MS0xOC4yODU3MTQgMTguMjg1NzE1LTE4LjI4NTcxNGgzNzQuODU3MTQyYzEwLjA1NzE0MyAwIDE4LjI4NTcxNCA4LjIyODU3MSAxOC4yODU3MTUgMTguMjg1NzE0cy04LjIyODU3MSAxOC4yODU3MTQtMTguMjg1NzE1IDE4LjI4NTcxNXpNNjY3LjQyODU3MSAzNTYuNTcxNDI5SDQ4NC41NzE0MjljLTEwLjA1NzE0MyAwLTE4LjI4NTcxNC04LjIyODU3MS0xOC4yODU3MTUtMTguMjg1NzE1czguMjI4NTcxLTE4LjI4NTcxNCAxOC4yODU3MTUtMTguMjg1NzE0aDE4Mi44NTcxNDJjMTAuMDU3MTQzIDAgMTguMjg1NzE0IDguMjI4NTcxIDE4LjI4NTcxNSAxOC4yODU3MTRzLTguMjI4NTcxIDE4LjI4NTcxNC0xOC4yODU3MTUgMTguMjg1NzE1ek01NDguNTcxNDI5IDQyMC41NzE0MjloLTY0Yy0xMC4wNTcxNDMgMC0xOC4yODU3MTQtOC4yMjg1NzEtMTguMjg1NzE1LTE4LjI4NTcxNXM4LjIyODU3MS0xOC4yODU3MTQgMTguMjg1NzE1LTE4LjI4NTcxNGg2NGMxMC4wNTcxNDMgMCAxOC4yODU3MTQgOC4yMjg1NzEgMTguMjg1NzE0IDE4LjI4NTcxNHMtOC4yMjg1NzEgMTguMjg1NzE0LTE4LjI4NTcxNCAxOC4yODU3MTV6TTIzNy43MTQyODYgNDc1LjQyODU3MWgtMTguMjg1NzE1Yy0xMC4wNTcxNDMgMC0xOC4yODU3MTQtOC4yMjg1NzEtMTguMjg1NzE0LTE4LjI4NTcxNHM4LjIyODU3MS0xOC4yODU3MTQgMTguMjg1NzE0LTE4LjI4NTcxNGgxOC4yODU3MTVjMTAuMDU3MTQzIDAgMTguMjg1NzE0IDguMjI4NTcxIDE4LjI4NTcxNCAxOC4yODU3MTRzLTguMjI4NTcxIDE4LjI4NTcxNC0xOC4yODU3MTQgMTguMjg1NzE0eiIgZmlsbD0iIzI0OEJGRiIgcC1pZD0iMzY1NSI+PC9wYXRoPjxwYXRoIGQ9Ik0zMDEuNzE0Mjg2IDUzOS40Mjg1NzFoLTgyLjI4NTcxNWMtMTAuMDU3MTQzIDAtMTguMjg1NzE0LTguMjI4NTcxLTE4LjI4NTcxNC0xOC4yODU3MTRzOC4yMjg1NzEtMTguMjg1NzE0IDE4LjI4NTcxNC0xOC4yODU3MTRoODIuMjg1NzE1YzEwLjA1NzE0MyAwIDE4LjI4NTcxNCA4LjIyODU3MSAxOC4yODU3MTQgMTguMjg1NzE0cy04LjIyODU3MSAxOC4yODU3MTQtMTguMjg1NzE0IDE4LjI4NTcxNHoiIGZpbGw9IiMyNDhCRkYiIHAtaWQ9IjM2NTYiPjwvcGF0aD48cGF0aCBkPSJNMjc0LjI4NTcxNCA2MDMuNDI4NTcxaC01NC44NTcxNDNjLTEwLjA1NzE0MyAwLTE4LjI4NTcxNC04LjIyODU3MS0xOC4yODU3MTQtMTguMjg1NzE0czguMjI4NTcxLTE4LjI4NTcxNCAxOC4yODU3MTQtMTguMjg1NzE0aDU0Ljg1NzE0M2MxMC4wNTcxNDMgMCAxOC4yODU3MTQgOC4yMjg1NzEgMTguMjg1NzE1IDE4LjI4NTcxNHMtOC4yMjg1NzEgMTguMjg1NzE0LTE4LjI4NTcxNSAxOC4yODU3MTR6IiBmaWxsPSIjMjQ4QkZGIiBwLWlkPSIzNjU3Ij48L3BhdGg+PC9zdmc+PCEtLSDljp/mlofku7blkI3vvJoi57uE5oCB5bel5YW3LnN2ZyIgLS0+
// @supportURL   https://github.com/linying23333
// @homepage     https://github.com/linying23333
// @run-at       document-idle
// @grant        none
// @namespace http://greasyfork.icu/users/1307848
// ==/UserScript==
// @require      http://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js
// @note         (预留的jQuery库,以便未来引用)
// @icon         来自 https://www.iconfont.cn/ 如果侵犯您的权利请与我沟通
// @note         更新日志&常见问题解决:http://greasyfork.icu/zh-CN/scripts/496221-%E6%8B%BC%E5%A4%9A%E5%A4%9A%E8%B7%A8%E5%A2%83-temu-%E5%BC%B9%E7%AA%97%E5%B1%8F%E8%94%BD/versions?show_all_versions=1
// @note         本js用户脚本版权归linying所有,仅供研究学习,禁止以任何形式倒卖

//这些参数只能输入数字,否则会导致错误.
//时间需要根据您的电脑加载速度而定,切勿无脑调低或者调高
//设置执行等待时间
let WaitTime = 4200; // 单位毫秒,1秒 = 1000毫秒
//设置为 1 不启用,推荐值为3800
//是否展示调价菜单
let ShowPriceMenu = 1; // 默认为"1",设置为"0"则为不展示

//快速删除间隔时间
let FastIntervalTime = 1; // 单位毫秒,1秒 = 1000毫秒
//快速删除持续删除时间
let FastDuration = 1; // 单位毫秒,1秒 = 1000毫秒
//两个设置为 1 不启用,推荐值为8000
//是否弹出快速输出结束提示框
let FastShow = 0; // 默认为"0",设置为"1"则为展示


'use strict';

//添加一个手动去除按钮
(function() {
    // 创建一个新的按钮元素
    var button = document.createElement('button');
    button.textContent = '清除弹窗!';

    // 设置按钮样式以使其位于左上角
    button.setAttribute('style' , 'z-index: 2147483647 !important; position: fixed; top: 96%; left: 20%;');

    // 为按钮添加点击事件监听器
    button.onclick = function() {
        console.log('来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示: 手动清除按钮被点击');
        removeElements();
        alert('来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示:' + `\r\n` + '已经执行清除');
    };

    // 将按钮添加到<body>的末尾
    document.body.appendChild(button);
})();


// 简单粗暴直接对所有都添加样式(显示为空)以屏蔽弹窗
//GM_addStyle("div[data-testid='beast-core-modal-mask']{display:none !important}");
//GM_addStyle("div[data-testid='beast-core-modal']{display:none !important}");
// 已弃用

// 提示用户js用户脚本将会等待变量值 WaitTime 毫秒
// alert(`来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示: 将会等待 ${WaitTime / 1000} 秒后开始执行`);
// 已弃用
insertModalDivs(`将会等待 ${WaitTime / 1000} 秒后开始执行删除`);

setTimeout(function() {
    // insertModalDivs 函数已经定义,并且接收文本参数来插入模态框
    insertModalDivs('开始操作'); // 使用你想要显示的文本作为参数

    setTimeout(function() {
        // 直接在setTimeout回调中调用remove函数
        remove();
    }, 0); // 延迟0毫秒
}, WaitTime); // 延迟WaitTime毫秒

// remove 函数的定义
function remove() {
    // 检查 document.readyState 是否为 'loading'
    if (document.readyState === 'loading') {
        // 如果还在加载中,等待 DOMContentLoaded 事件
        document.addEventListener('DOMContentLoaded', startInterval);
    } else {
        // 如果 DOM 已经加载完成,则直接执行删除操作
        startInterval();
    }
}

// 定义一个变量来存储interval ID,以便稍后清除它
let intervalId;

// 启动interval的函数
function startInterval() {
    // 设置interval来每X毫秒执行removeElements
    intervalId = setInterval(removeElements, FastIntervalTime); // 这里的单位是毫秒,你可以根据需要调整

    // 设置timeout来在 FastDuration 毫秒后退出执行
    setTimeout(() => {
        clearInterval(intervalId);
        // 检查两个值是否不同,则弹出提示
        if (FastIntervalTime !== FastDuration) {
            console.log(`来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示: ${FastDuration} 毫秒已过,停止删除操作。`);
            // 如果FastShow为1,则弹出提示框
            if (FastShow === 1) {
                alert(`来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示: 设置的循环时间 ${FastDuration} 毫秒到了,您可以继续操作了 `);
            }
        } else {
            console.log('来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示: 快速模式未启用'); // 注意:分号应该在括号外面
        }
    }, FastDuration); //  这里的单位是毫秒,你可以根据需要调整
}

function removeElements() {
    // 移除具有特定id属性的div元素(js_info)
    const elementsWithTestId0 = document.querySelectorAll('div[id="js_info"]');
    elementsWithTestId0.forEach(element => element.remove());


    // 查找并删除具有特定data-testid属性的div元素
    const elementsWithTestId = document.querySelectorAll('div[data-testid="beast-core-modal"]');

    elementsWithTestId.forEach(element => {
        let shouldRemoveParent = true; // 初始化变量

            // 查找 modalDiv 之前的具有 data-testid="beast-core-modal-mask" 的 div 元素
            let maskDiv = element.previousElementSibling;
            while (maskDiv && !maskDiv.matches('div[data-testid="beast-core-modal-mask"]')) {
                maskDiv = maskDiv.previousElementSibling;
            }

        // 如果ShowPriceMenu为0,则直接删除元素,不检查子结构
        if (ShowPriceMenu === 0) {
            element.remove();
            return; // 跳出当前循环,因为已经删除了元素
        }

        // 查找包含“切换店铺”文本的div
        const switchShopDiv = element.querySelector('.layout_title__1eHi_');
        if (switchShopDiv && switchShopDiv.textContent.trim().includes('切换店铺')) {
            shouldRemoveParent = false; // 如果找到,不删除父元素
        }

        // 在当前element中查找所有匹配的<th>元素
        const headers = element.querySelectorAll('.TB_thead_5-109-0 .TB_th_5-109-0');

        headers.forEach(header => {
            // 检查<th>元素的文本内容是否包含"调价原因"
            if (header.textContent.trim().includes('调价原因')) {
                shouldRemoveParent = false; // 不删除或隐藏父元素
                // 如果需要,可以在这里添加其他逻辑,比如修改<th>的样式
                // header.style.display = 'none'; // 隐藏<th>元素(如果需要)
                return; // 跳出内部循环的当前迭代
            }
        });

        // 根据shouldRemoveParent的值执行操作
        if (shouldRemoveParent) {
            console.log('来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示: 没有找到包含 "调价原因" 或 "切换店铺" 的元素');
            element.remove();

            // 如果找到了匹配的 maskDiv,则删除它
            if (maskDiv && maskDiv.matches('div[data-testid="beast-core-modal-mask"]')) {
                maskDiv.parentNode.removeChild(maskDiv);
            }

        } else {
            console.log('来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示: 找到包含 "调价原因" 或 "切换店铺" 的元素');
        }

        //结束后删除空的div
        setTimeout(function() {
            // 调用函数以删除body尾部的空div
            removeEmptyDivsAtBodyEnd();
        }, WaitTime + FastDuration + 10000); // 延迟:毫秒

    });
}

// insertModalDivs 函数的定义(如果它在其他地方没有定义的话)
function insertModalDivs(text) {
    // 这里是插入模态框的代码
    // 插入遮罩层 div
    const newDiv0 = document.createElement('div'); //创建div元素
    newDiv0.id = 'js_info'; // 设置id为js_info
    newDiv0.setAttribute('data-testid', 'beast-core-modal-mask'); //设置属性值"data-testid"的值为"beast-core-modal-mask"
    newDiv0.setAttribute('class', 'MDL_mask_5-109-0');
    newDiv0.setAttribute('style', 'z-index: 2147483647 !important; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); /* 示例背景色,可以根据需要调整 */');

    // 将遮罩层 div 添加到 body 的末尾
    document.body.appendChild(newDiv0);

    // 插入模态框 div
    const newDiv = document.createElement('div');
    newDiv.id = 'js_info'; // 设置id为js_info
    newDiv.setAttribute('data-testid', 'beast-core-modal');
    newDiv.setAttribute('class', 'MDL_outerWrapper_5-109-0 MDL_alert_5-109-0 undefined');
    newDiv.setAttribute('style', 'z-index: 2147483647 !important; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);'); // 居中显示

    // 设置模态框的内容
    newDiv.innerHTML = `
        <div data-testid="beast-core-modal-container" class="MDL_container_5-109-0">
            <div data-testid="beast-core-modal-innerWrapper" class="MDL_innerWrapper_5-109-0" style="z-index: 2147483647 !important;">
                <div data-testid="beast-core-modal-inner" class="MDL_inner_5-109-0" style="min-width: 50px; max-width: 1000px;">
                    <div data-testid="beast-core-modal-body" class="MDL_body_5-109-0 MDL_noHeader_5-109-0">
                        <div data-testid="beast-core-box">
                            <div class="modal_title"><h1>提示:</h1></div></div><br>
                        <div class="modal_body_content">
                            来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示:
                            <br>
                            ${text} <!-- 这里插入传入的 text 变量 -->
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    `;
    //网页结构复用拼多多中心消息提示

    // 将模态框 div 添加到 body 的末尾(通常在遮罩层之后)
    document.body.appendChild(newDiv);
}

// 防抖函数实现
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元素,并为其添加click事件监听器
//并且参数传递到debounce进行去重
document.querySelector('.index-module__menuBox___2aaTA').addEventListener('click', debounce(function(event) {
    if (event.target.closest('.index-module__menuBox___2aaTA')) {
        // 检查点击的目标是否是.bg-shell-theme-menu-mms的后代
        var mmsDescendant = event.target.closest('.bg-shell-theme-menu-mms');
        if (mmsDescendant) {
            // 进一步检查点击的目标是否是.index-module__menu___3Wyz- .bg-shell-theme-menu的后代
            // 但不是.bg-shell-theme-menu-mms的直接后代
            var menuDescendant = event.target.closest('.index-module__menu___3Wyz- .bg-shell-theme-menu');
            if (menuDescendant && mmsDescendant !== menuDescendant.parentNode) {
                // 这里表示匹配成功
                console.log('来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示: 匹配到.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() {
                    console.log(`来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示: 等待 1000 毫秒,加载网页`);
                    var currentPath = window.location.pathname; // 路径部分
                    let time; //初始化变量
                    if (longtimelist.includes(currentPath)) {
                        time = 1200;
                    } else {
                        time = 760;
                    }//判断是否匹配长时间列表

                    setTimeout(function() {
                        console.log(`来自 拼多多跨境(Temu)弹窗屏蔽 js用户脚本提示: 已经等待 ${time} 毫秒,执行删除函数`);
                        // 调用函数以删除body尾部的空div
                        removeElements();
                    }, time); // 延迟:毫秒

                }, 100); // 延迟:毫秒
            }
        }
    }
}, 1000));

// 定义删除尾部空div
function removeEmptyDivsAtBodyEnd() {
    // 获取body元素的最后一个子节点
    let lastChild = document.body.lastChild;

    // 循环检查body的最后一个子节点,直到找到非div或遇到空的div
    while (lastChild && lastChild.nodeName.toLowerCase() === 'div') {
        // 检查textContent是否为空字符串(忽略空格和换行符)
        if (!lastChild.textContent.trim()) {
            // 如果为空,则移除它
            lastChild.parentNode.removeChild(lastChild);
            // 更新lastChild为新的最后一个子节点
            lastChild = document.body.lastChild;
        } else {
            // 如果不是空的div,则停止循环(因为已经找到了非空或者非div的节点)
            break;
        }
    }
}