您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
开启脚本,进入网站https://free.mayun.us/,即可选择外区ios商店共享账号。
// ==UserScript== // @name ios美区共享账号免费获取(弹框清除脚本) // @namespace http://tampermonkey.net/ // @version 2025-06-30 // @description 开启脚本,进入网站https://free.mayun.us/,即可选择外区ios商店共享账号。 // @author sq li // @match * // @license MIT // @icon https://www.google.com/s2/favicons?sz=64&domain=greasyfork.org // @grant none // ==/UserScript== (function () { "use strict"; // Your code here... /** * 检测并清除页面中的各种弹框 * 支持多种常见弹框类型的检测与清除 */ function detectAndRemoveAllModals() { console.log("开始检测并清除弹框..."); // 1. 处理原生的alert/confirm/prompt // 重写window.alert, confirm, prompt方法 window.alert = function () { return undefined; }; window.confirm = function () { return true; }; window.prompt = function () { return ""; }; console.log("已屏蔽原生alert/confirm/prompt对话框"); // 2. 检测并移除可能的模态框/弹出层 const possibleModalSelectors = [ // 常见的弹框class名 ".modal", ".dialog", ".popup", ".overlay", ".layer", ".alert", ".message-box", ".dialog-box", ".pop", ".popover", ".toast", ".mask", ".modal-wrapper", ".modal-container", // 常见弹框库的class ".el-dialog__wrapper", ".el-message-box__wrapper", // Element UI ".ant-modal-root", ".ant-modal-mask", // Ant Design ".v-dialog__container", ".v-dialog", // Vuetify ".MuiDialog-root", ".MuiModal-root", // Material UI ".modal-backdrop", ".modal.show", // Bootstrap ".layui-layer", ".layui-layer-shade", // LayUI ".weui-dialog", ".weui-toast", // WeUI // 其他常见命名 '[class*="modal"]', '[class*="dialog"]', '[class*="popup"]', '[id*="modal"]', '[id*="dialog"]', '[id*="popup"]', // 通过z-index和position检测 'div[style*="z-index"][style*="position: fixed"]', 'div[style*="z-index"][style*="position:fixed"]', 'div[style*="z-index"][style*="position: absolute"]', 'div[style*="z-index"][style*="position:absolute"]', ]; // 合并所有选择器并获取元素 const allModals = document.querySelectorAll( possibleModalSelectors.join(", ") ); console.log(`找到 ${allModals.length} 个可能的弹框元素`); // 移除找到的所有弹框元素 allModals.forEach((modal, index) => { try { // 1. 尝试使用可能存在的关闭按钮 const closeButtons = modal.querySelectorAll( 'button.close, .close-btn, .cancel, .closeBtn, [class*="close"], ' + '[aria-label="Close"], [data-dismiss="modal"], .el-dialog__headerbtn, ' + ".ant-modal-close, .layui-layer-close" ); let closed = false; closeButtons.forEach((btn) => { try { btn.click(); closed = true; console.log(`通过关闭按钮关闭了弹框 #${index}`); } catch (e) { console.log(`点击关闭按钮失败: ${e.message}`); } }); // 2. 如果没有通过按钮关闭,尝试直接移除元素 if (!closed) { // 保存原始样式,以便检测变化 const originalDisplay = modal.style.display; const originalVisibility = modal.style.visibility; // 尝试使用常见的隐藏方法 modal.style.display = "none"; modal.style.visibility = "hidden"; modal.style.opacity = "0"; modal.style.pointerEvents = "none"; // 尝试将z-index设为较低值 if (modal.style.zIndex) { modal.style.zIndex = "-1"; } // 检查是否已隐藏,如果没有则尝试移除 if ( modal.style.display === originalDisplay && modal.style.visibility === originalVisibility ) { modal.remove(); console.log(`已移除弹框元素 #${index}`); } else { console.log(`已隐藏弹框元素 #${index}`); } } } catch (e) { console.error(`处理弹框 #${index} 时出错: ${e.message}`); } }); // 3. 移除可能的遮罩层 const overlays = document.querySelectorAll( ".overlay, .mask, .backdrop, .modal-backdrop, " + 'div[style*="background"][style*="fixed"], ' + 'div[style*="background-color: rgba"][style*="position: fixed"]' ); overlays.forEach((overlay, index) => { try { overlay.remove(); console.log(`已移除遮罩层 #${index}`); } catch (e) { console.error(`移除遮罩层 #${index} 时出错: ${e.message}`); } }); // 4. 恢复页面滚动 document.body.style.overflow = ""; document.documentElement.style.overflow = ""; document.body.style.position = ""; document.body.style.width = ""; document.body.style.height = ""; document.body.style.top = ""; console.log("已尝试恢复页面滚动状态"); // 5. 移除可能添加的内联样式 const bodyClasses = document.body.className.split(" "); const modalBodyClasses = bodyClasses.filter( (cls) => cls.includes("modal") || cls.includes("overflow") || cls.includes("fixed") ); modalBodyClasses.forEach((cls) => { document.body.classList.remove(cls); }); console.log("已清除可能的模态框相关body类"); return { modalCount: allModals.length, overlayCount: overlays.length, }; } let timer = setInterval(() => { // 执行函数 const result = detectAndRemoveAllModals(); console.log( `总共处理了 ${result.modalCount} 个弹框和 ${result.overlayCount} 个遮罩层` ); }, 10000); window.addEventListener("beforeunload", function (event) { clearInterval(timer); }); })();