您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allow exploring NPM packages for free
// ==UserScript== // @match https://www.npmjs.com/package/* // @match https://js.stripe.com/v3/controller-3d240f15c7d33335abc8bc509e1f19ad.html* // @name Free NPM Explore // @description Allow exploring NPM packages for free // @grant GM.addElement // @version 0.1.0 // @author KaKi87 // @license GPL-3.0-or-later // @namespace https://git.kaki87.net/KaKi87/userscripts/src/branch/master/FreeNpmExplore // ==/UserScript== if(window.location.href.startsWith('https://www.npmjs.com/package/')){ let iframe; document.querySelector('#package-tab-explore').addEventListener('click', async event => { await new Promise(resolve => { const _ = () => { const el = document.querySelector('#tabpanel-explore div'); if(el) resolve(el.setAttribute('style', 'display: none;')); else window.requestAnimationFrame(_); }; _(); }); if(iframe) iframe.style.display = 'block'; else { const [, package, version] = window.location.href.match(/^https:\/\/www\.npmjs\.com\/package\/(.+?)(?:\/v\/(.+))?$/); iframe = document.createElement('iframe'); iframe.setAttribute('src', `https://js.stripe.com/v3/controller-3d240f15c7d33335abc8bc509e1f19ad.html?${new URLSearchParams({ package, version })}`); iframe.setAttribute('style', 'border: none; width: 100%; height: 40rem'); } if(!document.body.contains(iframe)) document.querySelector('#tabpanel-explore').appendChild(iframe); }); document.querySelectorAll('[id^="package-tab"]:not(#package-tab-explore)').forEach(el => el.addEventListener('click', () => { if(iframe) iframe.style.display = 'none'; })); } else if(window.location.href.startsWith('https://js.stripe.com/v3/controller-3d240f15c7d33335abc8bc509e1f19ad.html')){ if(window.self !== window.top){ const sharedCss = 'position: absolute; top: 0; left: 0; width: 100vw; height: 100vh;', splash = document.createElement('div'); splash.setAttribute('style', sharedCss + 'z-index: 1; background-color: black; display: flex; justify-content: center; align-items: center; font-size: 2.5rem'); splash.innerText = 'Loading UNPKG...'; document.body.appendChild(splash); const { package, version } = Object.fromEntries(new URL(window.location.href).searchParams.entries()), iframe = document.createElement('iframe'); iframe.setAttribute('src', `https://unpkg.com/browse/${package}${version === 'undefined' ? '' : `@${version}`}/`); iframe.setAttribute('style', sharedCss + 'border: none; z-index: 2'); document.body.appendChild(iframe); } }