您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
新球体育网(球探)手机端网页,在对赛往绩和近期战绩点击输赢直接跳转到让球页面,让球水位高亮显示,并加入多场比赛的让球命中率统计功能。
当前为
// ==UserScript== // @name 新球体育网亚盘统计 // @namespace http://dol.freevar.com/ // @version 0.8 // @description 新球体育网(球探)手机端网页,在对赛往绩和近期战绩点击输赢直接跳转到让球页面,让球水位高亮显示,并加入多场比赛的让球命中率统计功能。 // @author Dolphin // @run-at document-idle // @match https://m.titan007.com/analy/Analysis/* // @match https://m.titan007.com/asian/* // @grant GM_addStyle // @license MIT // ==/UserScript== (function() { 'use strict'; // 样式定义 GM_addStyle(` .stats-table {border-collapse: collapse; margin:auto; width:80%;} .stats-table td, .stats-table th { border-bottom: 1px solid #ccf; text-align: center; } .highlight-green { background-color: #cfc; } .highlight-red { background-color: #fcc; } #calcStats { background-color: #cfc; padding: 5px 15px; border-radius:8px;} #showStats { background-color: #ccf; padding: 5px 15px; border-radius:8px;} #clearStats { background-color: #fcc; padding: 5px 15px; border-radius:8px;} `); // 解析让球数 function parseHandicap(text) { if(text === '-') return null; let value = 0; if(text.startsWith('-')) { text = text.substring(1); value = -parseFloat(text.split('/')[0]) - 0.25; } else { const parts = text.split('/'); value = parseFloat(parts[0]) + (parts[1] ? 0.25 : 0); } return value; } // 判断是否命中 function checkHit(scoreDiff, handicap, homeValue, awayValue) { homeValue = parseFloat(homeValue); awayValue = parseFloat(awayValue); handicap = parseHandicap(handicap); if(scoreDiff === handicap) return true; if(scoreDiff > handicap && homeValue < awayValue) return true; if(scoreDiff < handicap && awayValue < homeValue) return true; return false; } // 插入控制按钮 function insertControlButtons() { const contentdiv = document.getElementById('content'); if(!contentdiv) return; const buttons = document.createElement('div'); buttons.style.textAlign= 'center'; buttons.innerHTML= `<button class="control-btn" id="calcStats">统计</button> <button class="control-btn" id="showStats">显示</button> <button class="control-btn" id="clearStats">清除</button>`; contentdiv.appendChild(buttons); // 绑定事件 document.getElementById('showStats').addEventListener('click', handleShow); document.getElementById('calcStats').addEventListener('click', handleCalc); document.getElementById('clearStats').addEventListener('click', handleClear); } // 显示处理 function handleShow() { // 清除现有高亮 document.querySelectorAll('.oddsdata span').forEach(span => { span.classList.remove('highlight-green', 'highlight-red'); }); // 处理初始和即时数据 document.querySelectorAll('#oddsData > div').forEach(row => { const [initial, instant] = row.querySelectorAll('.oddsdata'); processCell(initial); processCell(instant); }); // 显示统计结果 showStatistics(); } function processCell(cell) { if(!cell) return; const spans = cell.querySelectorAll('span'); if(spans.length < 3) return; const home = parseFloat(spans[0].textContent); const away = parseFloat(spans[2].textContent); if(isNaN(home) || isNaN(away)) return; if(home < away) { spans[0].classList.add('highlight-green'); spans[2].classList.add('highlight-red'); } else if(home > away) { spans[0].classList.add('highlight-red'); spans[2].classList.add('highlight-green'); } } // 统计处理 function handleCalc() { const scoreDiff = getScoreDifference(); const stats = JSON.parse(localStorage.getItem('asianStats')) || {}; document.querySelectorAll('#oddsCompany > .CBtn').forEach(company => { const cid = company.id.split('_')[1]; const dataRow = document.querySelector( `#oddsData > div:nth-child(${Array.from(company.parentNode.children).indexOf(company) + 1})` ); if(!dataRow) return; const [initialData, instantData] = dataRow.querySelectorAll('.oddsdata'); // 处理初始数据(总是有效) updateStats(stats, cid, 'initial', initialData, scoreDiff); // 处理即时数据 if(instantData) { const spans = instantData.querySelectorAll('span'); const isValid = !Array.from(spans).every(span => span.textContent.trim() === '-' ); if(isValid) { updateStats(stats, cid, 'instant', instantData, scoreDiff); } } }); localStorage.setItem('asianStats', JSON.stringify(stats)); if(Object.values(stats).every(c => c.initial.hits === 0 && c.instant.hits === 0)) { alert('本轮统计没有公司命中!'); } } function updateStats(stats, cid, type, data, scoreDiff) { const spans = data.querySelectorAll('span'); if(spans.length < 3) return; const company = stats[cid] = stats[cid] || { initial: { count: 0, hits: 0 }, instant: { count: 0, hits: 0 } }; company[type].count++; if(checkHit(scoreDiff, spans[1].textContent, spans[0].textContent, spans[2].textContent)) { company[type].hits++; } } // 显示统计结果 function showStatistics() { const stats = JSON.parse(localStorage.getItem('asianStats')) || {}; const table = document.createElement('table'); table.className = 'stats-table'; // 创建表头 const header = '<tr><th>公司</th><th>开盘数</th><th>命中数</th><th>命中率</th>' + '<th>开盘数</th><th>命中数</th><th>命中率</th></tr>'; table.innerHTML = header; // 填充数据 Object.entries(stats).forEach(([cid, data]) => { const row = document.createElement('tr'); row.innerHTML = ` <td>${getCompanyName(cid)}</td> <td>${data.initial.count}</td> <td>${data.initial.hits}</td> <td>${(data.initial.hits / data.initial.count * 100 || 0).toFixed(1)}%</td> <td>${data.instant.count}</td> <td>${data.instant.hits}</td> <td>${(data.instant.hits / data.instant.count * 100 || 0).toFixed(1)}%</td> `; table.appendChild(row); }); // 插入页面 const existingTable = document.querySelector('.stats-table'); if(existingTable) existingTable.remove(); document.getElementById('oddsBox').after(table); } // 辅助函数 function getScoreDifference() { const home = parseInt(document.getElementById('homeScore').textContent); const away = parseInt(document.getElementById('guestScore').textContent); return home - away; } function getCompanyName(cid) { const element = document.querySelector(`#main_${cid}_0 .companyName`); return element ? element.textContent : `公司${cid}`; } function handleClear() { localStorage.removeItem('asianStats'); document.querySelector('.stats-table')?.remove(); alert('已清除所有统计数据'); } // 初始化 if(location.href.startsWith('https://m.titan007.com/asian/')) { insertControlButtons(); }else if(location.href.startsWith('https://m.titan007.com/analy/Analysis/')){ // 提取参数并绑定点击事件 function bindClicks() { // 选择所有包含 GoAnalyUrl(数字) 的 tr 元素 const targetTrs = document.querySelectorAll('tr[onclick*="GoAnalyUrl("]'); targetTrs.forEach(tr => { // 提取 onclick 中的数字参数 const onClickAttr = tr.getAttribute('onclick'); const paramMatch = onClickAttr.match(/GoAnalyUrl\((\d+)\)/); if (!paramMatch) return; const id = paramMatch[1]; // 提取 ID // 获取第五个 td(索引从 0 开始) const tds = tr.querySelectorAll('td'); if (tds.length < 5) return; const fifthTd = tds[4]; // 防止重复绑定 if (fifthTd._hasClickHandler) return; fifthTd._hasClickHandler = true; // 添加点击事件 fifthTd.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); // 阻止冒泡触发 tr 的点击事件 window.open(`https://m.titan007.com/asian/${id}.htm`, '_blank'); }); }); } setTimeout(bindClicks,2000); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址