您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a floating filter-by-device option to indieappsales website
// ==UserScript== // @name Indie App Sale Filter // @namespace http://tampermonkey.net/ // @version 1.1 // @description Adds a floating filter-by-device option to indieappsales website // @author You // @match https://app.indieappsales.com/ // @icon https://www.google.com/s2/favicons?sz=64&domain=indieappsales.com // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; setTimeout(() => { const createStickyRadioButtons = () => { let containerDiv = document.createElement('div'); containerDiv.id = 'stickyContainer'; ['For', 'iOS', 'iPadOS', 'macOS', 'Windows', 'Android'].forEach((x, i) => { let radioBtn = document.createElement('input'); radioBtn.type = 'radio'; radioBtn.name = 'radioGroup'; radioBtn.value = x; radioBtn.id = 'filter' + i; radioBtn.addEventListener('click', () => filter(x)); containerDiv.appendChild(radioBtn); containerDiv.appendChild(document.createTextNode(x === 'For' ? 'All' : x)); }) document.body.appendChild(containerDiv); } createStickyRadioButtons(); let style = document.createElement('style'); style.innerHTML = ` #stickyContainer { position: fixed; display: flex; top: 0; left: 0; width: 100%; background-color: #f1f1f1; padding: 10px; text-align: center; justify-content: space-between; } `; document.head.appendChild(style); const allItems = document.querySelectorAll('tr'); const restoreAll = () => allItems.forEach(x => x.style.display = 'block'); const filter = (device) => { restoreAll(); allItems.forEach(x => { if (!x.querySelectorAll('p')[1]?.innerText.includes(device)) { x.style.display = 'none'; } }); } }, 2000) })();