Greasy Fork

Greasy Fork is available in English.

天天基金

根据天天基金页面提供的股票持仓计算预估涨幅,不代表真实涨幅

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         天天基金
// @description  根据天天基金页面提供的股票持仓计算预估涨幅,不代表真实涨幅
// @namespace    http://tampermonkey.net/
// @version      1.0
// @author       You
// @match        https://fund.eastmoney.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=github.com
// @grant        none
// @require      https://cdnjs.cloudflare.com/ajax/libs/decimal.js/9.0.0/decimal.min.js
// @license MIT
// ==/UserScript==

(function () {
    'use strict';

    // Your code here...
    let lastTime = 0;
    var button = document.createElement("button"); //创建一个按钮
    button.textContent = "预估净值"; //按钮内容
    button.style.width = "120px"; //按钮宽度
    button.style.height = "36px"; //按钮高度
    button.style.align = "center"; //文本居中
    button.style.color = "white"; //按钮文字颜色
    button.style.background = "#e33e33"; //按钮底色
    button.style.border = "10px solid #e33e33"; //边框属性
    button.style.borderRadius = "4px"; //按钮四个角弧度
    button.addEventListener("click", calcFund) //监听按钮点击事件


    var like_comment = document.getElementById('quotationItem_DataTable');
    //like_comment.appendChild(button); //把按钮加入到 x 的子节点中
    button.style.width = window.getComputedStyle(like_comment).width
    like_comment.insertBefore(button, like_comment.children[0])


// 创建一个 MutationObserver 实例
    const observer = new MutationObserver(mutations => {
        mutations.forEach(mutation => {
            // 检查是否有节点被添加或删除
            if (mutation.addedNodes.length || mutation.removedNodes.length) {
                // 在这里处理节点变化
                console.log('页面元素发生变化', mutation);
                calcFund();
            }
        });
    });

    var stock = like_comment.getElementsByClassName('ui-table-hover')[0];
    console.log(stock)
// 配置 MutationObserver,监听 DOM 树的变化
    observer.observe(stock, {
        childList: true, // 监听子节点的添加和删除
        subtree: true,   // 监听整个子树
        attributes: true, // 监听属性变化
        characterData: true // 监听文本内容变化
    });

    function calcFund() {

        let now = Date.now();

        if((now-lastTime) < 1000)
            return;

        lastTime = now;
        console.log('计算估值',Date.now())
        var tr_list = stock.children[0].children

        var total = Decimal(0);
        for (var j = 0; j < tr_list.length; j++) {
            var tr = tr_list[j];
            //console.log(tr)
            var stock_name = tr.children[0].innerText;
            if (stock_name === '股票名称')
                continue;

            if (tr.children[2].innerText.includes('--'))
                continue;
            total = total.add(new Decimal(tr.children[1].innerText.replace('%', '')).mul(new Decimal(tr.children[2].innerText.replace('%', ''))))

        }
        //console.log(total)
        button.textContent = '预估净值:' + total.div(new Decimal(100)).toFixed(4, Decimal.ROUND_DOWN) + '%'
    };
})();