// ==UserScript== // @name 测算一类基金的平均增长幅度 // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @require https://cdn.staticfile.org/jquery/3.5.0/jquery.min.js // @author You // @match http://fund.eastmoney.com/* // @grant GM_xmlhttpRequest // @connect * // @downloadURL none // ==/UserScript== (function() { 'use strict'; var $ = jQuery; $('head').append(``) var dom = $(`
01696  复锐医疗科技
`); var ifr = $(``); ifr.css({ display: 'none' }); $('body').append(dom); $('body').append(ifr); var inp = dom.find('[tar="search-input"]'); var content = dom.find('[tar="content"]'); var result = dom.find('[tar="result"]'); let closePanel = true; let toggle = dom.find('[tar="toggle"]'); toggle.on('click',function () { closePanel = !closePanel; if (closePanel) { dom.css({left: '-450px'}); toggle.text("开"); } else { dom.css({left: '0'}); toggle.text("关"); } }); content.html(''); var currentKey = ""; dom.find('[tar="search-btn"]').on('click',function () { let html = ""; initSearchPage.JsLoader(`http://fundsuggest.eastmoney.com/FundSearch/api/FundSearchPageAPI.ashx`,`m=1&key=${inp.val()}&pageindex=0&pagesize=85&_=1612791079815`,res => { res.Datas.forEach(ds => { html += `
${ds.CODE}  ${ds.NAME}
`; }); result.html(`未计算,共有${res.Datas.length}个搜索结果`); content.html(html); }); }); dom.find('[tar="calc-btn"]').on("click",function () { let codes = []; content.find('input[type="checkbox"]').each((ind,ele) => { if (ele.checked) { codes.push(ele.value); } }); getAvgGZ(codes,obj => { result.html(`平均收益为${obj.avg},有效基金数${obj.total}`); }); }); function oxFetch(url) { return new Promise(s => { GM_xmlhttpRequest({ method: "get", url, onload: function(res){ s(res.responseText); // code } }); }); } function getAvgGZ(codes,callback) { var total = 0; var index = -1; var GZ = 0; function getGZ(code,cb) { if (code) { oxFetch(`http://fundgz.1234567.com.cn/js/${code}.js?rt=${new Date().getTime()}`) .then(ret => { if (ret.startsWith('jsonpgz({"fundcode":')) { total++; GZ += + JSON.parse(ret.substring(8,ret.length - 2)).gszzl; } else { dom.find(`input[value="${code}"]`)[0].checked = false; } cb(); }); } else { cb(); } } var cb = function() { index++; if (codes.length > index) { getGZ(codes[index],cb); } else { callback({ total, GZ, avg: GZ / total }); } } cb(); } // Your code here... })();