您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Display post "Insight" inline instead of in another page
- // ==UserScript==
- // @name Reddit - Inline post insight
- // @namespace https://github.com/Procyon-b
- // @version 0.5.7
- // @description Display post "Insight" inline instead of in another page
- // @author Achernar
- // @match https://www.reddit.com/*
- // @match https://sh.reddit.com/*
- // @grant none
- // @run-at document-start
- // ==/UserScript==
- (function() {
- "use strict";
- var started=0;
- function start() {
- if (started) return;
- document.body.addEventListener('click', function(ev){
- //console.info({ev});
- var t=ev.target, r, f;
- if (t.href && (location.hostname == t.hostname) && t.pathname.startsWith('/poststats/') ) {
- ev.stopPropagation();
- ev.preventDefault();
- r=t.closest('div');
- if (r.nextElementSibling && r.nextElementSibling.id.startsWith('/poststats/')) {
- r.nextElementSibling.remove();
- return;
- }
- let f=document.createElement('iframe');
- f.src=t.pathname;
- f.id=t.pathname;
- f.style='border: none; height: 0;';
- r.parentNode.appendChild(f);
- }
- }, true);
- addStyle(2);
- started++;
- }
- function addStyle(v=1) {
- let st=document.createElement("style");
- document.documentElement.appendChild(st);
- if (v==2) st.textContent=
- `div:has(+ iframe):not(:has( div a[href^="/poststats/"] )) a[href^="/poststats/"] {
- font-size: 0;
- }
- div:has(+ iframe):not(:has( div a[href^="/poststats/"] )) a[href^="/poststats/"]::before {
- content: "[-]";
- font-size: 1rem !important;
- }`;
- else if (v==1) st.textContent=
- `html, :not(:is(pre,code)) {
- background: transparent !important;
- background-color: transparent !important;
- }
- html body > :not(shreddit-app),
- html body shreddit-app > :not([rpl]),
- html body shreddit-app > [rpl]::before,
- html body shreddit-app > [rpl][rpl][rpl] > :not(#subgrid-container),
- html body .main-container > :not(main),
- html body main > div > div,
- html body main > div > div + section
- {
- display: none !important;
- }
- shreddit-app > [rpl] {
- display: block !important;
- }
- obody,
- shreddit-app,
- shreddit-app > [rpl],
- #subgrid-container,
- #subgrid-container > .main-container,
- #subgrid-container > .main-container > main {
- display: contents !important;
- }
- main > div {
- margin: 0 !important;
- padding: 0 !important;
- }
- a {
- pointer-events: none;
- }
- body {
- overflow: auto;
- }`;
- }
- function resize() {
- var TO=0, iframe;
- if (!(iframe=parent.document.querySelector('iframe[id="'+location.pathname+'"]'))) return;
- function resizeIframe() {
- if (TO) {clearTimeout(TO); TO=0;}
- iframe.style.height=document.body.scrollHeight + 20 + 'px';
- }
- const obs = new ResizeObserver(function(e){
- if (TO) {clearTimeout(TO);}
- TO=setTimeout(resizeIframe,200);
- });
- obs.observe(document.body);
- }
- function tryUntil(F, TO=150, c=-1, fail) {
- if (!c--) {
- fail && fail();
- return;
- }
- try{F();}catch(e){setTimeout(function(){tryUntil(F,TO,c,fail);}, TO)}
- }
- if (window === window.top) {
- tryUntil(start, 0);
- if (document.readyState != 'loading') start();
- else {
- document.addEventListener('DOMContentLoaded', start);
- window.addEventListener('load', start);
- }
- }
- else if (location.pathname.startsWith('/poststats/')) {
- tryUntil(addStyle ,0);
- tryUntil(resize, 0);
- }
- })();