updateContent

Smoothly updates the content of an HTML element with an erase and write effect.

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.greasyfork.org/scripts/480392/1283450/updateContent.js

// ==UserScript==
// @name         updateContent
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Smoothly updates the content of an HTML element with an erase and write effect.
// @author       IgnaV
// @grant        none
// ==/UserScript==

const updateContent = (element, newContent, forceUpdate = false, totalTime = 2000) => {
    const currentContent = element.innerText;
    if (forceUpdate || currentContent !== newContent) {
        const intervalTime = totalTime / (currentContent.length + newContent.length);
        let i = currentContent.length - 1;
        const eraseInterval = setInterval(() => {
            element.innerText = currentContent.substring(0, i--);
            if (i < 0) {
                clearInterval(eraseInterval);
                let j = 0;
                const writeInterval = setInterval(() => {
                    element.innerText = newContent.substring(0, ++j);
                    if (j === newContent.length) {
                        clearInterval(writeInterval);
                    }
                }, intervalTime);
            }
        }, intervalTime);
    }
};