Tap to Scroll (Ignore Links)

Tap the top or bottom of the screen to scroll the page up or down, while ignoring taps on links and interactive elements. Double-tap to close active article (only on FreshRSS). Preserve original double-click behavior on other websites.

目前为 2025-02-04 提交的版本。查看 最新版本

// ==UserScript==
// @name         Tap to Scroll (Ignore Links)
// @namespace    http://tampermonkey.net/
// @version      1.7
// @description  Tap the top or bottom of the screen to scroll the page up or down, while ignoring taps on links and interactive elements. Double-tap to close active article (only on FreshRSS). Preserve original double-click behavior on other websites.
// @author       Your Name
// @homepage     https://gf.qytechs.cn/en/scripts/525817
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    // Define the threshold for tap zones (e.g., top 20% and bottom 20% of the screen)
    const tapZoneThreshold = 0.2; // 20% of the screen height

    // Single-tap event for scrolling
    document.addEventListener('click', function (event) {
        // Check if the tap is on an interactive element (e.g., link, button, input)
        const interactiveElements = ['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'LABEL'];
        if (interactiveElements.includes(event.target.tagName)) {
            return; // Ignore taps on interactive elements
        }

        const screenHeight = window.innerHeight;
        const tapY = event.clientY; // Y-coordinate of the tap

        // Determine if the tap is in the top or bottom zone
        if (tapY < screenHeight * tapZoneThreshold) {
            // Tap in the top zone: scroll up
            window.scrollBy({ top: -window.innerHeight * 0.8, behavior: 'smooth' });
        } else if (tapY > screenHeight * (1 - tapZoneThreshold)) {
            // Tap in the bottom zone: scroll down
            window.scrollBy({ top: window.innerHeight * 0.8, behavior: 'smooth' });
        }
    });

    // Double-tap event
    document.addEventListener('dblclick', function (event) {
        // Check if the current webpage is FreshRSS
        const isFreshRSS = window.document.title.endsWith("· FreshRSS"); // Adjust the condition as needed

        if (isFreshRSS) {
            // Custom behavior for FreshRSS
            // Check if the double-tap is on an interactive element
            const interactiveElements = ['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'LABEL'];
            if (interactiveElements.includes(event.target.tagName)) {
                return; // Ignore double-taps on interactive elements
            }

            // Find the closest element with both 'current' and 'active' classes
            const activeElement = event.target.closest('.current.active');
            if (activeElement) {
                // Remove the 'active' class
                activeElement.classList.remove('active');
                // console.log('Removed "active" class from:', activeElement);

                // Scroll the page to the closed article (activeElement)
                activeElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
            }
        } else {
            // Allow the original double-click behavior on non-FreshRSS webpages
            return; // Do nothing, let the browser handle the double-click
        }
    });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址