├── README.md ├── Stay-signature.png ├── Stay-signature@3x.png ├── baidu ├── stay-baidu.update.js └── stay-baidu.user.js ├── csdn ├── stay-csdn.update.js └── stay-csdn.user.js ├── darkmode └── darkmodev2.user.js ├── google ├── stay-google.update.js └── stay-google.user.js ├── jianshu ├── stay-jianshu.update.js └── stay-jianshu.user.js ├── netease ├── stay-netease.update.js └── stay-netease.user.js ├── newsqq ├── stay-newsqq.update.js └── stay-newsqq.user.js ├── sina ├── stay-sina.update.js └── stay-sina.user.js ├── sohu ├── stay-sohu.update.js └── stay-sohu.user.js ├── tieba ├── stay-tieba.update.js └── stay-tieba.user.js ├── toutiao ├── stay-toutiao.update.js └── stay-toutiao.user.js ├── xhs ├── stay-xhs.update.js └── stay-xhs.user.js └── zhihu ├── stay-zhihu.update.js └── stay-zhihu.user.js /README.md: -------------------------------------------------------------------------------- 1 | # Stay offical userscript 2 | [Get the userscript manager **Stay²**](https://github.com/shenruisi/Stay) 3 | 4 | ## Developed by Stay 5 | | Name | Description | Link | 6 | | :---- | :---- | :----: | 7 | | 知乎@AutoExpand | 自动展开回答,支持知乎桌面版 | [Get](https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/zhihu/stay-zhihu.user.js) | 8 | | Google@PreventAppJump | 防止从Google结果页跳转到其他App | [Get](https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/google/stay-google.user.js) | 9 | | 百度@PreventAppJump | 防止从Baidu结果页跳转到其他App | [Get](https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/baidu/stay-baidu.user.js) | 10 | | 今日头条@AutoExpand | 自动展开今日头条文章 | [Get](https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/toutiao/stay-toutiao.user.js) | 11 | | CSDN@AutoExpand | 自动展开CSDN文章 | [Get](https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/csdn/stay-csdn.user.js) | 12 | | 简书@AutoExpand | 自动展开简书文章 | [Get](https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/jianshu/stay-jianshu.user.js) | 13 | | 搜狐@AutoExpand | 自动展开搜狐文章 | [Get](https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/sohu/stay-sohu.user.js) | 14 | | 小红书@AutoExpand | 自动展开小红书笔记 | [Get](https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/xhs/stay-xhs.user.js) | 15 | | 新浪新闻@AutoExpand | 自动展开新浪新闻文章 | [Get](https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/sina/stay-sina.user.js) | 16 | | 腾讯新闻@AutoExpand | 自动展开腾讯新闻文章 | [Get](https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/newsqq/stay-newsqq.user.js) | 17 | | 百度贴吧@AutoExpand | 自动展开百度贴吧帖子 | [Get](https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/tieba/stay-tieba.user.js) | 18 | | 网易@AutoExpand | 自动展开网易文章,解除仅 App 阅读限制 | [Get](https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/netease/stay-netease.user.js) | 19 | 20 | ## Available on Stay 21 | | Name | Description | Link | 22 | | :---- | :---- | :----: | 23 | | Login reminder popup remover | Removes the nagging login popups and banners from mobile and desktop versions of Facebook, Instagram, Reddit, Twitter, Quora, Ask.fm, VK, Pinterest and from the mobile version of Youtube. | [Get](https://greasyfork.org/scripts/395497-login-reminder-popup-remover/code/Login%20reminder%20popup%20remover.user.js#bypass=true) | 24 | | Remove Google Redirection | Remove Google Redirection | [Get](https://github.com/kodango/Remove-Google-Redirection) | 25 | | Sci-hub button | Add sci-hub button on article page. Add sci-hub button after article link. Support Google scholar, bing academic and baidu xueshu. Jump CNKI English article to Chinese article. | [Get](https://greasyfork.org/scripts/370246-sci-hub-button/code/Sci-hub%20button.user.js) | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Stay-signature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/0dd47c7170349fa8a626672a425879901e3908da/Stay-signature.png -------------------------------------------------------------------------------- /Stay-signature@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/0dd47c7170349fa8a626672a425879901e3908da/Stay-signature@3x.png -------------------------------------------------------------------------------- /baidu/stay-baidu.update.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 百度@PreventAppJump 3 | // @namespace http://stay.app/ 4 | // @version 0.0.5 5 | // @description 防止从Baidu结果页跳转到其他App 6 | // @author Stay² 7 | // @match *://*.baidu.com/* 8 | // @match *://*.zhihu.com/R_E_D_I_R_E_C_T/* 9 | // @match *://*.xiaohongshu.com/R_E_D_I_R_E_C_T/* 10 | // @exclude (http|https)://tieba.baidu.com/* 11 | // @run-at document-start 12 | // @require stay://vendor/stay-taskloop.js 13 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/baidu/stay-baidu.update.js 14 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/baidu/stay-baidu.user.js 15 | // ==/UserScript== 16 | -------------------------------------------------------------------------------- /baidu/stay-baidu.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 百度@PreventAppJump 3 | // @namespace http://stay.app/ 4 | // @version 0.0.5 5 | // @description 防止从Baidu结果页跳转到其他App 6 | // @author Stay² 7 | // @match *://*.baidu.com/* 8 | // @match *://*.zhihu.com/R_E_D_I_R_E_C_T/* 9 | // @match *://*.xiaohongshu.com/R_E_D_I_R_E_C_T/* 10 | // @exclude (http|https)://tieba.baidu.com/* 11 | // @run-at document-start 12 | // @require stay://vendor/stay-taskloop.js 13 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/baidu/stay-baidu.update.js 14 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/baidu/stay-baidu.user.js 15 | // ==/UserScript== 16 | 17 | const ZHIHU_REG = /^(http|https):\/\/(.*\.){0,1}zhihu.com\/.*$/; 18 | const TIEBA_REG = /^(http|https):\/\/tieba.baidu.com\/.*$/; 19 | const XHS_REG = /^(http|https):\/\/m.xiaohongshu.com\/.*$/; 20 | const BILIBILI_REG = /^(http|https):\/\/(.*\.){0,1}bilibili.com\/.*$/; 21 | 22 | const $uri = (url) => { 23 | let a = document.createElement("a"); 24 | a.href = url; 25 | return a; 26 | } 27 | 28 | const $res = (name) => { 29 | return browser.runtime.getURL(name); 30 | } 31 | 32 | const $noJumpUrl = (host,url) => { 33 | if (host == "tieba.baidu.com"){ 34 | console.log($res('iframe.html')+"?url="+encodeURIComponent(url)); 35 | return $res('iframe.html')+"?url="+encodeURIComponent(url); 36 | } 37 | else if (host == "zhuanlan.zhihu.com"){ 38 | return "https://zhuanlan.zhihu.com/R_E_D_I_R_E_C_T/?url="+encodeURIComponent(url); 39 | } 40 | else if (host == "www.zhihu.com"){ 41 | return "https://www.zhihu.com/R_E_D_I_R_E_C_T/?url="+encodeURIComponent(url); 42 | } 43 | else if (host == "m.xiaohongshu.com"){ 44 | return "https://m.xiaohongshu.com/R_E_D_I_R_E_C_T/?url="+encodeURIComponent(url); 45 | } 46 | else if (host == "m.bilibili.com" || host == "www.bilibili.com"){ 47 | return $res('iframe.html')+"?url="+encodeURIComponent(url); 48 | } 49 | 50 | return null; 51 | } 52 | 53 | const $getQueryVariable = (variable) => { 54 | var query = window.location.search.substring(1); 55 | var vars = query.split("&"); 56 | for (var i=0;i {}); 227 | } 228 | else{ 229 | document.addEventListener("DOMContentLoaded", function(event) { 230 | let tasks = [banAds,banBottomBanner,banBall,removeAppJump,unfold,removeChoosePanel,replaceDirectUrl,moreResult,popLead]; 231 | Stay_Inject.run(tasks,100,30,false).then((data) => {}); 232 | }); 233 | } 234 | 235 | } 236 | 237 | 238 | 239 | 240 | 241 | -------------------------------------------------------------------------------- /csdn/stay-csdn.update.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name CSDN@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开CSDN文章 6 | // @author Stay² 7 | // @match *://*.csdn.net/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/csdn/stay-csdn.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/csdn/stay-csdn.user.js 12 | // ==/UserScript== -------------------------------------------------------------------------------- /csdn/stay-csdn.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name CSDN@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开CSDN文章 6 | // @author Stay² 7 | // @match *://*.csdn.net/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/csdn/stay-csdn.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/csdn/stay-csdn.user.js 12 | // ==/UserScript== 13 | 14 | function removeChoosePanel(){ 15 | let pannel = document.querySelector('.weixin-shadowbox'); 16 | if (pannel){ 17 | pannel.remove(); 18 | return COMPLETE; 19 | } 20 | 21 | return CONTINUE; 22 | } 23 | 24 | function removeAppJump(){ 25 | let app = document.querySelector('span.feed-Sign-span'); 26 | if (app){ 27 | var url = app.getAttribute("data-href"); 28 | app.remove(); 29 | return DATA(); 30 | } 31 | 32 | return CONTINUE; 33 | } 34 | 35 | function unfold(){ 36 | let main = document.querySelector('#main'); 37 | if (main){ 38 | let content = main.querySelector(".article_content"); 39 | if (content){ 40 | content.style.overflow = null; 41 | content.style.height = null; 42 | } 43 | 44 | let readallbox = main.querySelector(".readall_box"); 45 | console.log(readallbox); 46 | if (readallbox){ 47 | readallbox.remove(); 48 | readallbox.className = "readall_box_nobg"; 49 | } 50 | 51 | let prompt = main.querySelector(".btn_open_app_prompt_div"); 52 | if (prompt){ 53 | prompt.remove(); 54 | } 55 | 56 | return COMPLETE; 57 | } 58 | 59 | return CONTINUE; 60 | } 61 | 62 | if (document.readyState !== "loading"){ 63 | let tasks = [removeChoosePanel,removeAppJump,unfold]; 64 | Stay_Inject.run(tasks,100,30,false).then((data) => {}); 65 | } 66 | else{ 67 | document.addEventListener("DOMContentLoaded", function(event) { 68 | let tasks = [removeChoosePanel,removeAppJump,unfold]; 69 | Stay_Inject.run(tasks,100,30,false).then((data) => {}); 70 | }); 71 | } 72 | -------------------------------------------------------------------------------- /google/stay-google.update.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name Google@PreventAppJump 3 | // @namespace http://stay.app/ 4 | // @version 0.0.3 5 | // @description 防止从Google结果页跳转到其他App 6 | // @author Stay² 7 | // @match *://*.google.com/* 8 | // @match *://*.google.com.hk/* 9 | // @match *://*.zhihu.com/R_E_D_I_R_E_C_T/* 10 | // @match *://*.xiaohongshu.com/R_E_D_I_R_E_C_T/* 11 | // @run-at document-start 12 | // @require stay://vendor/stay-taskloop.js 13 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/google/stay-google.update.js 14 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/google/stay-google.user.js 15 | // ==/UserScript== 16 | 17 | 18 | -------------------------------------------------------------------------------- /google/stay-google.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name Google@PreventAppJump 3 | // @namespace http://stay.app/ 4 | // @version 0.0.3 5 | // @description 防止从Google结果页跳转到其他App 6 | // @author Stay² 7 | // @match *://*.google.com/* 8 | // @match *://*.google.com.hk/* 9 | // @match *://*.zhihu.com/R_E_D_I_R_E_C_T/* 10 | // @match *://*.xiaohongshu.com/R_E_D_I_R_E_C_T/* 11 | // @run-at document-start 12 | // @require stay://vendor/stay-taskloop.js 13 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/google/stay-google.update.js 14 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/google/stay-google.user.js 15 | // ==/UserScript== 16 | 17 | const ZHIHU_REG = /^(http|https):\/\/(.*\.){0,1}zhihu.com\/.*$/; 18 | const TIEBA_REG = /^(http|https):\/\/tieba.baidu.com\/.*$/; 19 | const XHS_REG = /^(http|https):\/\/m.xiaohongshu.com\/.*$/; 20 | const BILIBILI_REG = /^(http|https):\/\/(.*\.){0,1}bilibili.com\/.*$/; 21 | 22 | const $uri = (url) => { 23 | let a = document.createElement("a"); 24 | a.href = url; 25 | return a; 26 | } 27 | 28 | const $res = (name) => { 29 | return browser.runtime.getURL(name); 30 | } 31 | 32 | const $noJumpUrl = (host,url) => { 33 | if (host == "tieba.baidu.com"){ 34 | return $res('iframe.html')+"?url="+encodeURIComponent(url); 35 | } 36 | else if (host == "zhuanlan.zhihu.com"){ 37 | return "https://zhuanlan.zhihu.com/R_E_D_I_R_E_C_T/?url="+encodeURIComponent(url); 38 | } 39 | else if (host == "www.zhihu.com"){ 40 | return "https://www.zhihu.com/R_E_D_I_R_E_C_T/?url="+encodeURIComponent(url); 41 | } 42 | else if (host == "m.xiaohongshu.com"){ 43 | return "https://m.xiaohongshu.com/R_E_D_I_R_E_C_T/?url="+encodeURIComponent(url); 44 | } 45 | else if (host == "m.bilibili.com" || host == "www.bilibili.com"){ 46 | return $res('iframe.html')+"?url="+encodeURIComponent(url); 47 | } 48 | 49 | return null; 50 | } 51 | 52 | const $getQueryVariable = (variable) => { 53 | var query = window.location.search.substring(1); 54 | var vars = query.split("&"); 55 | for (var i=0;i {}); 110 | } 111 | else{ 112 | document.addEventListener("DOMContentLoaded", function(event) { 113 | let tasks = [banBottomBanner,replaceDirectUrl]; 114 | Stay_Inject.run(tasks,100,30,true).then((data) => {}); 115 | }); 116 | } 117 | 118 | 119 | } 120 | 121 | 122 | -------------------------------------------------------------------------------- /jianshu/stay-jianshu.update.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 简书@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开简书文章 6 | // @author Stay² 7 | // @match *://*.jianshu.com/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/jianshu/stay-jianshu.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/jianshu/stay-jianshu.user.js 12 | // ==/UserScript== 13 | 14 | -------------------------------------------------------------------------------- /jianshu/stay-jianshu.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 简书@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开简书文章 6 | // @author Stay² 7 | // @match *://*.jianshu.com/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/jianshu/stay-jianshu.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/jianshu/stay-jianshu.user.js 12 | // ==/UserScript== 13 | 14 | function removeChoosePanel(){ 15 | let pannel = document.querySelector('.download-app-guidance'); 16 | if (pannel){ 17 | pannel.remove(); 18 | return COMPLETE; 19 | } 20 | 21 | return CONTINUE; 22 | } 23 | 24 | function removeAppJump(){ 25 | let app = document.querySelector('button.call-app-btn'); 26 | if (app){ 27 | app.remove(); 28 | return COMPLETE; 29 | } 30 | 31 | return CONTINUE; 32 | } 33 | 34 | function unfold(){ 35 | 36 | 37 | let closebtn = document.querySelector('button.close-collapse-btn'); 38 | if (closebtn){ 39 | closebtn.click(); 40 | 41 | let openAppModal = document.querySelector('div.open-app-modal'); 42 | if (openAppModal){ 43 | let cancelbtn = openAppModal.querySelector('button.cancel'); 44 | cancelbtn.click(); 45 | } 46 | 47 | // let content = document.querySelector('div.collapse-free-content') 48 | // if (content){ 49 | // content.className = null; 50 | // } 51 | // 52 | return COMPLETE; 53 | } 54 | 55 | return CONTINUE; 56 | } 57 | 58 | if (document.readyState != "loading"){ 59 | let tasks = [removeChoosePanel,removeAppJump,unfold]; 60 | Stay_Inject.run(tasks,100,30,false).then((data) => {}); 61 | } 62 | else{ 63 | document.addEventListener("DOMContentLoaded", function(event) { 64 | let tasks = [removeChoosePanel,removeAppJump,unfold]; 65 | Stay_Inject.run(tasks,100,30,false).then((data) => {}); 66 | }); 67 | } 68 | 69 | -------------------------------------------------------------------------------- /netease/stay-netease.update.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 网易@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.1 5 | // @description 自动展开网易文章,解除仅 App 阅读限制 6 | // @author Stay² 7 | // @match *://3g.163.com/* 8 | // @grant GM_addStyle 9 | // @run-at document-start 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/netease/stay-netease.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/netease/stay-netease.user.js 12 | // ==/UserScript== -------------------------------------------------------------------------------- /netease/stay-netease.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 网易@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.1 5 | // @description 自动展开网易文章,解除仅 App 阅读限制 6 | // @author Stay² 7 | // @match *://3g.163.com/* 8 | // @grant GM_addStyle 9 | // @run-at document-start 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/netease/stay-netease.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/netease/stay-netease.user.js 12 | // ==/UserScript== 13 | 14 | (function () { 15 | if (typeof GM_addStyle == "undefined") { 16 | function GM_addStyle(css) { 17 | let style = document.createElement("style"); 18 | style.appendChild(document.createTextNode(css)); 19 | (document.querySelector("head") || document.documentElement).appendChild(style); 20 | } 21 | }; 22 | GM_addStyle(`\ 23 | .footer { 24 | display: none !important; 25 | } 26 | article { 27 | height: auto !important; 28 | max-height: none !important; 29 | overflow: visible !important; 30 | } 31 | article .content .page { 32 | display: block !important; 33 | }` 34 | ); 35 | window.addEventListener("load", () => { 36 | document.querySelectorAll('a[class^="newsapp-model-"]').forEach(_ => _.outerHTML = _.outerHTML); 37 | document.querySelectorAll('.to-app').forEach(_ => _.remove()) 38 | }); 39 | })(); -------------------------------------------------------------------------------- /newsqq/stay-newsqq.update.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 腾讯新闻@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开腾讯新闻文章 6 | // @author Stay² 7 | // @match *://xw.qq.com/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/newsqq/stay-newsqq.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/newsqq/stay-newsqq.user.js 12 | // ==/UserScript== -------------------------------------------------------------------------------- /newsqq/stay-newsqq.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 腾讯新闻@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开腾讯新闻文章 6 | // @author Stay² 7 | // @match *://xw.qq.com/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/newsqq/stay-newsqq.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/newsqq/stay-newsqq.user.js 12 | // ==/UserScript== 13 | 14 | function removeAds(){ 15 | document.querySelector(".inner")?.remove(); 16 | document.querySelector("#landad")?.remove(); 17 | document.querySelector(".ssp.nospl")?.remove(); 18 | document.querySelector("#__xw_next_view_root > .wrap")?.remove(); 19 | 20 | return CONTINUE; 21 | } 22 | 23 | function removeAnnoyances(){ 24 | document.querySelector(".go-home")?.remove(); 25 | document.querySelector(".pictureBottomBtn")?.remove(); 26 | document.querySelector(".elevator")?.remove(); 27 | 28 | return CONTINUE; 29 | } 30 | 31 | function unfold(){ 32 | let article_body = document.querySelector("#article_body"); 33 | if (article_body) { 34 | article_body.className = article_body.className.replace('packed', 'unpack'); 35 | document.querySelector(".collapseWrapper")?.remove(); 36 | document.querySelector(".mask")?.remove(); 37 | return CONTINUE; 38 | } 39 | 40 | return CONTINUE; 41 | } 42 | 43 | if (document.readyState !== "loading"){ 44 | let tasks = [removeAds,removeAnnoyances,unfold]; 45 | Stay_Inject.run(tasks,100,30,true).then((data) => {}); 46 | } 47 | else{ 48 | document.addEventListener("DOMContentLoaded", function(event) { 49 | let tasks = [removeAds,removeAnnoyances,unfold]; 50 | Stay_Inject.run(tasks,100,30,true).then((data) => {}); 51 | }); 52 | } 53 | -------------------------------------------------------------------------------- /sina/stay-sina.update.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 新浪新闻@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开新浪新闻文章 6 | // @author Stay² 7 | // @match *://*.sina.cn/* 8 | // @match *://*.sina.com/* 9 | // @run-at document-start 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/sina/stay-sina.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/sina/stay-sina.user.js 12 | // ==/UserScript== -------------------------------------------------------------------------------- /sina/stay-sina.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 新浪新闻@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开新浪新闻文章 6 | // @author Stay² 7 | // @match *://*.sina.cn/* 8 | // @match *://*.sina.com/* 9 | // @run-at document-start 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/sina/stay-sina.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/sina/stay-sina.user.js 12 | // ==/UserScript== 13 | 14 | var interval; 15 | setTimeout(function(){ 16 | if (!interval){ 17 | interval = setInterval(function(){ 18 | document.querySelectorAll('.look_more_a')?.forEach(_=>_.remove()); 19 | document.querySelector('.callApp_fl_btn')?.remove(); 20 | document.querySelector('#artFoldBox')?.remove(); 21 | let article_body = document.querySelector('section.s_card.z_c1'); 22 | article_body?.removeAttribute("style") 23 | if (article_body && !article_body.hasAttribute('style')) { 24 | clearInterval(interval); 25 | interval = null; 26 | } 27 | }, 100) 28 | } 29 | },1000) 30 | -------------------------------------------------------------------------------- /sohu/stay-sohu.update.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 搜狐@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开搜狐文章 6 | // @author Stay² 7 | // @match *://*.sohu.com/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/sohu/stay-sohu.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/sohu/stay-sohu.user.js 12 | // ==/UserScript== -------------------------------------------------------------------------------- /sohu/stay-sohu.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 搜狐@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开搜狐文章 6 | // @author Stay² 7 | // @match *://*.sohu.com/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/sohu/stay-sohu.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/sohu/stay-sohu.user.js 12 | // ==/UserScript== 13 | 14 | function removeAds(){ 15 | let ad = document.querySelector(".middle-insert-ad"); 16 | if (ad){ 17 | ad.style.display = "none"; 18 | return COMPLETE; 19 | } 20 | 21 | return CONTINUE; 22 | } 23 | 24 | function unfold(){ 25 | let lookallbox = document.querySelector(".article-main .lookall-box"); 26 | console.log(lookallbox); 27 | if (lookallbox){ 28 | lookallbox.style.display = "none"; 29 | if (lookallbox){ 30 | let otherContent = document.querySelector(".article-main .hidden-content"); 31 | if (otherContent){ 32 | otherContent.className = "hidden-content"; 33 | return COMPLETE; 34 | } 35 | } 36 | } 37 | 38 | return CONTINUE; 39 | } 40 | 41 | if (document.readyState !== "loading"){ 42 | let tasks = [removeAds,unfold]; 43 | Stay_Inject.run(tasks,100,30,true).then((data) => {}); 44 | } 45 | else{ 46 | document.addEventListener("DOMContentLoaded", function(event) { 47 | let tasks = [removeAds,unfold]; 48 | Stay_Inject.run(tasks,100,30,true).then((data) => {}); 49 | }); 50 | } 51 | -------------------------------------------------------------------------------- /tieba/stay-tieba.update.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 百度贴吧@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开百度贴吧帖子 6 | // @author Stay² 7 | // @match *://tieba.baidu.com/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/tieba/stay-tieba.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/tieba/stay-tieba.user.js 12 | // ==/UserScript== -------------------------------------------------------------------------------- /tieba/stay-tieba.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 百度贴吧@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开百度贴吧帖子 6 | // @author Stay² 7 | // @match *://tieba.baidu.com/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/tieba/stay-tieba.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/tieba/stay-tieba.user.js 12 | // ==/UserScript== 13 | 14 | function removeChoosePanel(){ 15 | console.log("removeChoosePanel"); 16 | let pannel = document.querySelector('nav.tb-backflow-defensive'); 17 | console.log(document,pannel); 18 | if (pannel){ 19 | console.log(pannel); 20 | let btns = pannel.querySelectorAll('.tb-share__btn'); 21 | for (var i=0; i < btns.length; i++){ 22 | let button = btns[i]; 23 | if (button.innerText == "继续"){ 24 | button.click(); 25 | return COMPLETE; 26 | } 27 | } 28 | return COMPLETE; 29 | } 30 | 31 | return CONTINUE; 32 | } 33 | 34 | if (document.readyState !== "loading"){ 35 | let tasks = [removeChoosePanel]; 36 | Stay_Inject.run(tasks,100,30,false).then((data) => {}); 37 | } 38 | else{ 39 | document.addEventListener("DOMContentLoaded", function(event) { 40 | let tasks = [removeChoosePanel]; 41 | Stay_Inject.run(tasks,100,30,false).then((data) => {}); 42 | }); 43 | } 44 | -------------------------------------------------------------------------------- /toutiao/stay-toutiao.update.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 今日头条@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开今日头条文章 6 | // @author Stay² 7 | // @match *://m.toutiao.com/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/toutiao/stay-toutiao.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/toutiao/stay-toutiao.user.js 12 | // ==/UserScript== -------------------------------------------------------------------------------- /toutiao/stay-toutiao.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 今日头条@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开今日头条文章 6 | // @author Stay² 7 | // @match *://m.toutiao.com/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/toutiao/stay-toutiao.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/toutiao/stay-toutiao.user.js 12 | // ==/UserScript== 13 | 14 | function removeTopBanner(){ 15 | let banner = document.querySelector('.top-banner-container'); 16 | if (banner){ 17 | banner.remove(); 18 | return DATA(); 19 | } 20 | 21 | return CONTINUE; 22 | } 23 | 24 | function unfold(){ 25 | let button = document.querySelector('div.fold-btn-btn'); 26 | if (button){ 27 | button.remove(); 28 | let content = document.querySelector('div.fold-btn-content') 29 | if (content){ 30 | content.className = null; 31 | content.className = "fold-btn-content"; 32 | } 33 | return COMPLETE; 34 | } 35 | 36 | return CONTINUE; 37 | } 38 | 39 | if (document.readyState !== "loading"){ 40 | let tasks = [removeTopBanner,unfold]; 41 | Stay_Inject.run(tasks,100,30,false).then((data) => {}); 42 | } 43 | else{ 44 | document.addEventListener("DOMContentLoaded", function(event) { 45 | let tasks = [removeTopBanner,unfold]; 46 | Stay_Inject.run(tasks,100,30,false).then((data) => {}); 47 | }); 48 | } 49 | -------------------------------------------------------------------------------- /xhs/stay-xhs.update.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 小红书@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开小红书笔记 6 | // @author Stay² 7 | // @match *://*.xiaohongshu.com/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/xhs/stay-xhs.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/xhs/stay-xhs.user.js 12 | // ==/UserScript== 13 | -------------------------------------------------------------------------------- /xhs/stay-xhs.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 小红书@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.2 5 | // @description 自动展开小红书笔记 6 | // @author Stay² 7 | // @match *://*.xiaohongshu.com/* 8 | // @run-at document-start 9 | // @require stay://vendor/stay-taskloop.js 10 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/xhs/stay-xhs.update.js 11 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/xhs/stay-xhs.user.js 12 | // ==/UserScript== 13 | 14 | function removeTopBanner(){ 15 | let app = document.querySelector("#app"); 16 | if (app){ 17 | let navbar = app.querySelector(".normal-launch-app-container"); 18 | if (navbar){ 19 | navbar.style.display = "none"; 20 | return COMPLETE; 21 | } 22 | } 23 | 24 | return CONTINUE; 25 | } 26 | 27 | function removeAppJump(){ 28 | let app = document.querySelector("#app"); 29 | if (app){ 30 | let bottombar = app.querySelector(".bottom-bar"); 31 | if (bottombar){ 32 | bottombar.remove(); 33 | var url = window.location.href; 34 | return DATA(); 35 | } 36 | } 37 | 38 | return CONTINUE; 39 | } 40 | 41 | function unfold(){ 42 | let app = document.querySelector("#app"); 43 | if (app){ 44 | let checkmore = app.querySelector(".check-more"); 45 | if (checkmore){ 46 | checkmore.style.display = "none"; 47 | let content = app.querySelector(".content"); 48 | if (content){ 49 | content.style.height = null; 50 | return COMPLETE; 51 | } 52 | } 53 | } 54 | 55 | return CONTINUE; 56 | } 57 | 58 | 59 | window.onload = function() { 60 | let tasks = [removeTopBanner,removeAppJump,unfold]; 61 | Stay_Inject.run(tasks,100,30,true).then((data) => {}); 62 | } 63 | 64 | -------------------------------------------------------------------------------- /zhihu/stay-zhihu.update.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 知乎@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.6 5 | // @description 自动展开回答,支持知乎桌面版 6 | // @author Stay² 7 | // @match *://*.zhihu.com/* 8 | // @exclude (http|https)://*.zhihu.com/R_E_D_I_R_E_C_T/* 9 | // @run-at document-start 10 | // @grant GM_log 11 | // @require stay://vendor/stay-taskloop.js 12 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/zhihu/stay-zhihu.update.js 13 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/zhihu/stay-zhihu.user.js 14 | // ==/UserScript== 15 | -------------------------------------------------------------------------------- /zhihu/stay-zhihu.user.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name 知乎@AutoExpand 3 | // @namespace http://stay.app/ 4 | // @version 0.0.6 5 | // @description 自动展开回答,支持知乎桌面版 6 | // @author Stay² 7 | // @match *://*.zhihu.com/* 8 | // @exclude (http|https)://*.zhihu.com/R_E_D_I_R_E_C_T/* 9 | // @run-at document-start 10 | // @grant GM_log 11 | // @require stay://vendor/stay-taskloop.js 12 | // @updateURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/zhihu/stay-zhihu.update.js 13 | // @downloadURL https://raw.githubusercontent.com/shenruisi/Stay-Offical-Userscript/main/zhihu/stay-zhihu.user.js 14 | // ==/UserScript== 15 | 16 | function removeChoosePanel(){ 17 | let pannels = document.querySelectorAll('.ModalWrap'); 18 | for (var i = 0; i < pannels.length; i++){ 19 | let pannel = pannels[i]; 20 | let div = pannel.querySelector('.ModalExp-modalShow'); 21 | if (div){ 22 | let btns = div.querySelectorAll('.ModalWrap-itemBtn'); 23 | 24 | for (var i=0; i < btns.length; i++){ 25 | let button = btns[i]; 26 | if (button.innerText == "继续"){ 27 | button.click(); 28 | return COMPLETE; 29 | } 30 | } 31 | } 32 | } 33 | 34 | return CONTINUE; 35 | } 36 | 37 | function removeAppJump(){ 38 | let app = document.querySelector('button.OpenInAppButton'); 39 | if (app){ 40 | var url = app.getAttribute("urlscheme"); 41 | app.remove(); 42 | return DATA(); 43 | } 44 | return CONTINUE; 45 | } 46 | 47 | function unfold(){ 48 | let btns = document.querySelectorAll('.ContentItem-expandButton'); 49 | for (var i = 0; i < btns.length; i++){ 50 | let btn = btns[i]; 51 | if (/展开阅读全文/.test(btn.innerText)){ 52 | let content = btn.parentNode; 53 | if (content){ 54 | content.className = "RichContent RichContent--unescapable"; 55 | let contentinner = content.querySelector('.RichContent-inner'); 56 | if (contentinner){ 57 | contentinner.style.maxHeight = "none"; 58 | } 59 | } 60 | btn.remove(); 61 | let main = document.querySelector(".Question-main"); 62 | if (main){ 63 | main.onclick = function(event){ 64 | let target = event.target; 65 | while(!/RichContent/.test(target.className) && target.tagName != "BODY"){ 66 | target = target.parentNode; 67 | } 68 | if (/RichContent/.test(target.className)){ 69 | event.preventDefault(); 70 | event.stopPropagation(); 71 | } 72 | 73 | } 74 | } 75 | 76 | return COMPLETE; 77 | } 78 | } 79 | 80 | return CONTINUE; 81 | } 82 | 83 | function replaceDirectUrl(){ 84 | let items = document.querySelectorAll('.Feed'); 85 | if (items){ 86 | for (var i = 0; i < items.length; i++){ 87 | let item = items[i]; 88 | let a = item.querySelector('a'); 89 | item.onclick = function(event){ 90 | event.preventDefault(); 91 | event.stopPropagation(); 92 | location.href = a.href; 93 | } 94 | } 95 | return COMPLETE; 96 | } 97 | 98 | return CONTINUE_TIL(10); 99 | } 100 | 101 | function supportDesktopBrowsingIfNeeded(){ 102 | console.log("supportDesktopBrowsing",window.navigator.userAgent); 103 | if (/Macintosh/.test(window.navigator.userAgent)){ 104 | var css = "*{box-sizing:border-box;min-width:initial!important;max-width:100%!important;}html{overflow-y:auto!important;}body{position:absolute!important;top:0!important;width:100%;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}.RichContent-actions.is-fixed,.Question-sideColumn,.ContentLayout-sideColumn,.QuestionHeader-footer,#free-reward-panel,.show-foot,.meta-bottom{display:none!important;}.Question-mainColumn,.ContentLayout-mainColumn{width:100%!important;margin:0!important;padding:6px!important;}#free-reward-panel,.AdblockBanner,.AppHeader-Tabs,.AppHeader-userInfo,.Modal-wrapper,.Pc-word,.Question-sideColumn,.QuestionHeader-footer,.RichContent-actions.is-fixed,.meta-bottom,.show-foot,body>div:last-child,.Question-mainColumnLogin,.Profile-sideColumn,.QuestionHeader-side,.ModalWrap,.ShareMenu{display:none!important;}.Topstory{padding:0!important;}.GlobalSideBar,.Question-sideColumn,.QuestionHeader-side,.TopstoryItem--advertCard,.TopstorySideBar,.css-1qefhqu{display:none!important;}.AppHeader,.AppHeader-widescreenResponsive.AppHeader-inner{box-sizing:content-box!important;width:100%!important;min-width:100%!important;padding:0!important;}.QuestionHeader{min-width:initial;}.Question-mainColumn,.Topstory-mainColumn,.TopstoryMain,.TopstoryV2-mainColumn{width:100%!important;max-width:100%!important;}.Topstory-mainColumn{margin:0!important;}.TopstoryItem.ZVideoItem{margin:0;}.TopstoryItem.ZVideoItem.RichContent{overflow:hidden;margin-top:20px;}.ContentItem-more.ContentItem-arrowIcon{vertical-align:-2px;}.AnswerItem,.ArticleItem,.Layout-main.av-card{font-size:120%!important;}.RichTextpre{font-size:90%!important;padding:0.8em1.2em!important;padding-top:0.6em;padding-bottom:0.6em;}.RichTextcode,.RichTextpre{font-family:\"JetBrainsMono\",FiraMono-Regular,Menlo,Courier,monospace!important;}.ContentItem-time,.Post-Header,.Post-NormalMain>div,.Post-NormalSub.Comments-container,.Post-RichTextContainer,.Post-topicsAndReviewer,.PostIndex-Contributions,.TitleImage{width:100%!important;}.Post-RichText{font-size:18px;}.Footer{display:none!important;}.SearchResult-Card.ContentItem-title{color:#0084ff!important;}.Search-container.RichContent.is-collapsed.RichContent-inner{font-size:16px!important;}.Profile-lightList{padding:6px20px;}.Profile-lightItem:first-child{border-top:0none!important;}.Profile-lightItem:last-child{border-bottom:0none!important;}.ProfileMain.RichContent{line-height:1.8;}.ContentItem-actions{margin:6px0;padding:0;flex-wrap:wrap;justify-content:space-between;}.QuestionHeader-main,.Question-main{padding:0;}.Post-Main{margin:02em;}.AppHeader-inner.css-qqgmyv{padding:6px10px;}.QuestionHeader-content{padding:012px;}.List-item{padding:10px12px;}"; 105 | var node = document.createElement("style"); 106 | node.type = "text/css"; 107 | node.appendChild(document.createTextNode(css)); 108 | var heads = document.getElementsByTagName("head"); 109 | if (heads.length > 0) { 110 | heads[0].appendChild(node); 111 | } else { 112 | document.documentElement.appendChild(node); 113 | } 114 | } 115 | else{ 116 | let tasks = [removeChoosePanel,removeAppJump,replaceDirectUrl,unfold]; 117 | Stay_Inject.run(tasks,100,30,false).then((data) => {}); 118 | } 119 | } 120 | 121 | if (document.readyState !== "loading"){ 122 | supportDesktopBrowsingIfNeeded(); 123 | } 124 | else{ 125 | document.addEventListener("DOMContentLoaded", function(event) { 126 | supportDesktopBrowsingIfNeeded(); 127 | }); 128 | } 129 | 130 | document.addEventListener("scroll", function(event) { 131 | if (!/Macintosh/.test(window.navigator.userAgent)){ 132 | let guide = document.querySelector('div.DownloadGuide'); 133 | if (guide){ 134 | console.log(guide); 135 | guide.style.display = "none"; 136 | } 137 | } 138 | 139 | }); 140 | --------------------------------------------------------------------------------