You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

优化CookieClicker油猴脚本:用EventListener替代setInterval

Let's break down why your v2 script wasn't working and fix it step by step.

Core Issues in Your V2 Script

  1. Wrong Event Type: The onchange event doesn't fire when child elements are added/removed from containers like #shimmers or #buffs. You need MutationObserver—a tool built specifically for watching DOM changes.
  2. Timer Scope Problem: Your IntervalBigCookie variable was declared inside the buffChange function, so when you tried to clear it later, the variable didn't exist in that scope.
  3. Game Loading Race Condition: Your script might run before the game's critical elements (#shimmers, #buffs, #bigCookie) are fully loaded, leading to "element not found" errors.
  4. Inefficient Golden Cookie Handling: The while loop with manual count decrement was unnecessary and could miss elements if the DOM changed mid-loop.

Corrected V2 Script

// ==UserScript== 
// @name GoldenCookie 
// @namespace http://tampermonkey.net/ 
// @version 2.1 
// @description Auto golden Cookie Click and massive Big Cookie Click on Buff 
// @author ProfDrNoiR 
// @match http://orteil.dashnet.org/cookieclicker/ 
// @grant none 
// ==/UserScript== 

// Wait for the game to fully load before initializing
function initScript() {
    const shimmersContainer = document.getElementById("shimmers");
    const buffsContainer = document.getElementById("buffs");
    const bigCookie = document.getElementById("bigCookie");

    // Global variable to track the big cookie click timer
    let bigCookieTimer = null;

    // --- Golden Cookie Observer ---
    const shimmerObserver = new MutationObserver((mutations) => {
        mutations.forEach(mutation => {
            // Click every new golden cookie as it appears
            mutation.addedNodes.forEach(node => {
                if (node.classList?.contains("shimmer")) {
                    node.click();
                    console.log("Clicked golden cookie!");
                }
            });
        });
    });

    // --- Buff Observer ---
    const buffObserver = new MutationObserver(() => {
        const hasActiveBuffs = buffsContainer.childElementCount > 0;

        if (hasActiveBuffs && !bigCookieTimer) {
            // Start spamming clicks when buff activates
            bigCookieTimer = setInterval(() => {
                bigCookie.click();
                // Uncomment below if you want logs (may slow the game)
                // console.log("Spamming big cookie click");
            }, 5);
            console.log("Buff activated: Started spamming big cookie");
        } else if (!hasActiveBuffs && bigCookieTimer) {
            // Stop spamming when all buffs expire
            clearInterval(bigCookieTimer);
            bigCookieTimer = null;
            console.log("All buffs expired: Stopped spamming big cookie");
        }
    });

    // Start observing container changes
    shimmerObserver.observe(shimmersContainer, { childList: true });
    buffObserver.observe(buffsContainer, { childList: true });

    console.log("Cookie Clicker Auto-Script initialized!");
}

// Wait for critical game elements to exist before running init
const waitForGameLoad = setInterval(() => {
    if (document.getElementById("shimmers") && document.getElementById("buffs") && document.getElementById("bigCookie")) {
        clearInterval(waitForGameLoad);
        initScript();
    }
}, 100);

Key Improvements Explained

  • MutationObserver: This API watches exactly the changes we care about (adding/removing child elements), so we avoid the wasted resources of polling like in v1.
  • Global Timer Variable: bigCookieTimer is declared outside the observer callback, ensuring we can reliably start and stop it across buff state changes.
  • Game Load Wait: The script waits until all critical elements exist before initializing, eliminating "element not found" errors.
  • Efficient Clicking: For golden cookies, we directly click each new node as it's added—no need to count or loop through all elements every time.
  • Clean Buff Handling: We only start the timer if it's not already running, and only stop it when no buffs remain, preventing duplicate timers.

To load your save:

  1. Open Cookie Clicker and press F12 to open the browser console.
  2. Paste this command (note: replaced %21 with ! in your save string):
Game.LoadSave("Mi4wMTZ8fDE1NDc4NTQyMzQ2MzE7MTU0Njg1NTkzNjkwMjsxNTQ3OTAwMDI0OTQ4O1RyaXBsZSBNdWZmaW47YWF3b2R8MDExMTAwMTExMDEwMTAxMDAxMDB8MzAzMDU3OTQ5Njg3NzIuMzk7NTMyMDIxMDU0Njg2NzUuNjY0OzQyNjI0Ozc0MDsxOTU3NDMxNDg3MDIzMS45MDI7MzE3OzA7MDs2OTg4NDkyMTM3Njk3NDQ4MDAwOzA7MDswOzA7MDszOzUwOzA7MDswOzA7MDswOzswOzA7MTkxOzEzOzE3ODswOzA7NDM7LTE7LTE7LTE7LTE7ODs0OzA7MDswOzA7MDswOzEyOzE1NDc4ODQ5MTc3OTI7MDswOzt8MTYwLDI2MCw2NzM2NDg3MjM0MDU3LDAsLDA7MTQwLDM0MCw1MTU1NjQ4NTgyOCwwLCwxOzEyMCw2MTAsODUyNjM1MDMzNyw0LDE1NDc5MDAzODYwNTE6MjoxNTQ3ODYwNzQzOTIzOjA6MDo0MToxOjA6MTU0Nzg1NDIzNDYzNTogMTExMDAwMDAwMDAwMTEwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMCAwOjA6MDowOjA6MDowOjA6MDowOjA6MDowOjA6MDowOjA6MDowOjA6MDowOjA6MDowOjA6MDowOjA6MDowOjA6MDowOjA6MDowOjA6MDowOjA6MjoxNToyOjM2OjI6MzU6MjozNDowOjA6MDowOjA6MDowOjA6MDowOjA6MTo4OjE6ODowOjA6MDowOjA6MDowOjA6MDowOjA6MDowOjA6MDowOjA6LDA7MTEwLDExMCwyMzc0ODA3MDQ1MiwwLCwxOzkwLDkwLDYwODU0NDE3NTU1LDAsLDE7NzAsNzAsMTkxNzYxMTA0NTAxLDAsLDE7NTAsNTEsNDM3MTQxMzkxNjA4LDEsMi82Ly0xIDIgMTU0Nzg5NzY3NjI4NiAxLDE7NDAsNDAsMTU1NDA5NDYwNTQxNywxLDMyIDIgNjMgMSwwOzIwLDIwLDIyOTAyODUzMjYyOTcsMCwsMTsxMCwxMCw0NTc1Nzc5NDIzMjIwLDAsLDE7Nyw3LDQxNTQwNTE1NDMyODYsMCwsMTswLDAsMCwwLCwwOzAsMCwwLDAsMCwsMDswLDAsMCwwLCwwOzAsMCwwLDAsMCwsMDswLDAsMCwwLCwwOzAsMCwwLDAsMCwwLDAsLDA7fDExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTExMTAwMTAxMDAwMDAwMDAwMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTAwMDAwMDAwMTExMTEwMTAxMDExMTExMTExMTExMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMTExMTExMTExMDAxMDEwMDAwMDAwMDAxMDAwMTAxMDEwMDAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDEwMTAxMDEwMDAxMTExMDAxMTAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMTExMTExMTExMTEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTExMTExMTEwMDAwMTExMTExMTAwMDAwMTExMTExMDAwMDAwMTExMTExMTEwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDAwMDAwMDAwMDAwMDAwMDAwMTEwMDAwMDAwMDAwMDAxMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTExMDAxMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAwMDAwMDAwMDAwMDAwMDAwMDExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTExMTExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwfDExMTExMTExMTExMTAwMDAxMTExMTExMTExMTExMTExMDExMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTAxMTAxMDAxMDAxMTEwMTExMTExMTAwMDEwMTAwMTEwMDEwMDAwMDAwMDAxMTExMDAwMDAwMDAwMDAxMTEwMDAwMDEwMDAwMDAwMDAxMDAwMDAwMDAwMDAxMTAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDExMTAwMTExMDAxMTAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMTEwMTAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMHwwLDIzMTAsMzc5LDc7!!END!!")
  1. Press Enter, and your save will load.

内容的提问来源于stack exchange,提问作者ProfDrNoiR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:48:22