forumfr-hide-cookies-button

Fait glisser le bouton persistant des paramètres de cookies afin de ne pas gêner la navigation sur les petits écrans.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         forumfr-hide-cookies-button
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Fait glisser le bouton persistant des paramètres de cookies afin de ne pas gêner la navigation sur les petits écrans.
// @author       Ed38
// @license      MIT
// @match        https://www.forumfr.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=forumfr.com
// @grant        GM_addStyle
// @run-at       document-body
// ==/UserScript==

// Note de l'auteur :
//
// Le script peut sembler bien compliqué pour pas grand'chose
// mais il est conçu ainsi afin d'éviter un léger tressautement
// du bouton sur certains affichages lors du chargement de la page.

(function() {
    GM_addStyle(`

        #sd-cmp > div > div  {
            top: calc(100% - 60px);
            transition-property: top;
            transition-duration: 250ms;
            transition-timing-function: ease;
            transition-delay: 0s;
            display: none;
        }

        .sd-cmp-noglitch{
            display: block !important;
        }

        .sd-cmp-hide {
            transition-property: top;
            transition-duration: 750ms;
            transition-timing-function: ease;
            transition-delay: 5s;
            top: calc(100% - 4px)  !important;
        }

        `);

    const buttonSelector = '#sd-cmp > div > div' ;
    let timeoutHandle ;
    let button ;

    waitForElement(buttonSelector).then((element) => {
        start(element) ;
    });

    function start(b) {
        button = b ;
        button.addEventListener("mouseover",showCookiesButton,false);
        window.addEventListener("scroll", showCookiesButton,false);
        window.addEventListener("endscroll", timeout, false);
        timeout();
        showCookiesButton();
    }

    function timeout(){
        timeoutHandle = setTimeout(hideCookiesButton, 2000);
    }

    function hideCookiesButton() {
        button.classList.add("sd-cmp-hide");
    }

    function showCookiesButton() {
        clearTimeout(timeoutHandle);
        button.classList.remove("sd-cmp-hide");
        button.classList.add("sd-cmp-noglitch");
        timeout();
    }

    function waitForElement(selector) {
        return new Promise((resolve) => {
            const observer = new MutationObserver((mutations, observer) => {
                const element = document.body.querySelector(selector) ;
                if (element) {
                    observer.disconnect() ;
                    resolve(element) ;
                }
            });

            observer.observe(document.body, {
                childList: true,
                subtree: true,
            });
        });
    }

})();