IdleHacking - Cursor Cleanup

Keep normal text as arrow cursor while preserving pointer cursor on interactive game UI.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

Advertisement:

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

Advertisement:

// ==UserScript==
// @name         IdleHacking - Cursor Cleanup
// @namespace    https://greasyfork.org/
// @version      1.02
// @description  Keep normal text as arrow cursor while preserving pointer cursor on interactive game UI.
// @match        https://www.idlehacking.com/*
// @grant        none
// @run-at       document-idle
// ==/UserScript==

(function () {
    'use strict';

    if (window.__idlehackingCursorCleanupInstalled) return;
    window.__idlehackingCursorCleanupInstalled = true;

    const STYLE_ID = 'idlehacking-cursor-cleanup-style';

    function installStyle() {
        if (document.getElementById(STYLE_ID)) return;

        const style = document.createElement('style');
        style.id = STYLE_ID;
        style.textContent = `
            /* Default everything non-editable to normal arrow */
            *:not(input):not(textarea):not(select):not(option):not(button):not(a):not([contenteditable="true"]) {
                cursor: default !important;
            }

            /* Preserve hand cursor on interactive elements */
            a,
            button,
            select,
            option,
            [role="button"],
            .panel-collapse-indicator,
            .panel-header-collapsible {
                cursor: pointer !important;
            }

            /* Keep text-entry controls behaving normally */
            input,
            textarea,
            [contenteditable="true"] {
                cursor: text !important;
            }
        `;

        document.head.appendChild(style);
    }

    function init() {
        if (!document.head) return;
        installStyle();
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', init, { once: true });
    } else {
        init();
    }

    window.__idlehackingCursorCleanupRemove = function () {
        const style = document.getElementById(STYLE_ID);
        if (style) style.remove();
        delete window.__idlehackingCursorCleanupInstalled;
        delete window.__idlehackingCursorCleanupRemove;
    };
})();