您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Fixes Connect bug where activity comparison shows a blank page for activities containing step speed loss chart
// ==UserScript== // @name Garmin Connect: fix activity comparisons // @namespace http://tampermonkey.net/ // @description Fixes Connect bug where activity comparison shows a blank page for activities containing step speed loss chart // @author You // @match https://connect.garmin.com/modern/* // @icon https://www.google.com/s2/favicons?sz=64&domain=garmin.com // @grant window.onurlchange // @license MIT // @version 0.1 // ==/UserScript== (function () { 'use strict'; const urlPrefix = 'https://connect.garmin.com/modern/activities/compare' let currentPageMatchesUrl = false; waitForUrl() function waitForUrl() { // if (window.onurlchange == null) { // feature is supported window.addEventListener('urlchange', onUrlChange); // } onUrlChange(); } function onUrlChange() { const urlMatches = window.location.href.startsWith(urlPrefix); if (!currentPageMatchesUrl) { if (urlMatches) { currentPageMatchesUrl = true; init(); } } else { if (!urlMatches) { currentPageMatchesUrl = false; deinit(); } } } (function () { const accessor = Object.getOwnPropertyDescriptor(XMLHttpRequest.prototype, 'responseText'); Object.defineProperty(XMLHttpRequest.prototype, 'responseText', { get: function () { const responseText = accessor.get.call(this); if (!currentPageMatchesUrl) { return responseText; } if (this.responseURL.toString().match('https://connect.garmin.com/activity-service/activity/[0-9]*/details')) { console.warn('intercepted activity details request: ' + this.responseURL) const data = JSON.parse(responseText); const newDescriptors = []; for (const d of data['metricDescriptors']) { if ( !d['key'].startsWith('directStepSpeedLoss') // && // !d['key'].startsWith('directImpactLoadFactor') ) { newDescriptors.push(d) } } data['metricDescriptors'] = newDescriptors; console.warn('modified activity chart descriptors to exclude step speed loss') return JSON.stringify(data); } return responseText; }, configurable: true }); })(); function init() { } function deinit() { } })();