Greasy Fork is available in English.

BUFF自动计算当前商品倒余额的利率

自动在商品界面的价格旁添加一个利率标签

// ==UserScript==
// @name         BUFF自动计算当前商品倒余额的利率
// @namespace    http://tampermonkey.net/
// @version      1.0.3
// @description  自动在商品界面的价格旁添加一个利率标签
// @author       You
// @match        https://buff.163.com/goods/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=163.com
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';
    window.onload = function () {
        let regexPrice = /\d+(\.\d+)?/;
        let PriceDOM;

        function main() {
            PriceDOM = document.getElementsByClassName("f_Strong");
            if (PriceDOM && PriceDOM.length == 12) {
                let steamPriceText = PriceDOM[1].innerText;
                let steamPrice = (regexPrice.exec(steamPriceText)[0]);
                let buffslowestPriceText = PriceDOM[2].innerText;
                let buffslowestPrice = (regexPrice.exec(buffslowestPriceText))[0];
                let RateLabel = document.createElement("label");
                let Rate = calculateInterestRates(steamPrice, buffslowestPrice);
                RateLabel.innerHTML = "利率" + Rate + "%";
                PriceDOM[1].appendChild(RateLabel);
                observer.disconnect(); // 停止观察
            }else if (PriceDOM && PriceDOM.length == 11) {
                let steamPriceText = PriceDOM[0].innerText;
                let steamPrice = (regexPrice.exec(steamPriceText)[0]);
                let buffslowestPriceText = PriceDOM[1].innerText;
                let buffslowestPrice = (regexPrice.exec(buffslowestPriceText))[0];
                let RateLabel = document.createElement("label");
                let Rate = calculateInterestRates(steamPrice, buffslowestPrice);
                RateLabel.innerHTML = "利率" + Rate + "%";
                PriceDOM[0].appendChild(RateLabel);
                observer.disconnect(); // 停止观察
            }
        }

        function calculateInterestRates(steamPrice, buffslowestPrice) {
            let InterestRates = (steamPrice * 0.85 - buffslowestPrice) / buffslowestPrice;
            InterestRates = Math.round(InterestRates * 10000) / 100;
            return InterestRates;
        };
        // 创建一个观察器实例并传入回调函数
        var observer = new MutationObserver(main);

        // 观察器的配置(需要观察什么变动)
        var config = { childList: true, subtree: true };

        // 定期检查元素是否存在
        var checkExist = setInterval(function () {
            var targetNode = document.querySelector('.list_tb_csgo');
            if (targetNode) {
                // 传入目标节点和观察配置
                observer.observe(targetNode, config);
                clearInterval(checkExist);
                main(); // 手动调用一次 main 函数
            } else {
                console.log("目标节点未找到");
            }
        }, 500); // 每500毫秒检查一次
    }
})();