您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Continuously simulates user click on UpLearn's "Continue" button across multiple lessons/pages in SPA environment like React (no full reloads needed). 🧠✨
- // ==UserScript==
- // @name Persistent Auto-Click "Continue" on UpLearn
- // @namespace http://tampermonkey.net/
- // @version 1.3
- // @description Continuously simulates user click on UpLearn's "Continue" button across multiple lessons/pages in SPA environment like React (no full reloads needed). 🧠✨
- // @author JustSimplyDnaie
- // @match *://*.uplearn.co.uk/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function () {
- 'use strict';
- const BUTTON_SELECTOR = 'button[type="submit"]';
- const OBSERVER_DELAY = 500; // How often to check DOM changes
- let clickedRecently = false;
- function simulateClick(element) {
- console.log('[Auto-Click] Simulating click on "Continue"...');
- const mouseEvent = new MouseEvent('click', {
- bubbles: true,
- cancelable: true,
- view: window,
- });
- element.dispatchEvent(mouseEvent);
- clickedRecently = true;
- setTimeout(() => {
- clickedRecently = false;
- }, 3000); // prevent double-clicking during countdown transitions
- }
- function tryClickContinue() {
- if (clickedRecently) return;
- const buttons = document.querySelectorAll(BUTTON_SELECTOR);
- for (const btn of buttons) {
- if (btn.textContent.trim().toLowerCase() === 'continue') {
- console.log('[Auto-Click] Found "Continue" button. Clicking...');
- simulateClick(btn);
- break;
- }
- }
- }
- // Setup MutationObserver to detect dynamic content changes
- const observer = new MutationObserver(() => {
- tryClickContinue();
- });
- window.addEventListener('load', () => {
- console.log('[Auto-Click] Loaded. Watching for DOM changes...');
- observer.observe(document.body, {
- childList: true,
- subtree: true
- });
- // Initial check in case button already present
- setTimeout(tryClickContinue, 1000);
- });
- })();