您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
默认去掉青柠起始页的页脚,使用 alt + t 控制搜索框的显示隐藏 使用alt + g切换时钟显示隐藏,变量全局存储,不需要每次打开都关闭或者显示了 alt+b 显示隐藏 B站热搜
当前为
// ==UserScript== // @license MIT // @name 简单的青柠起始页优化 // @namespace https://bbs.tampermonkey.net.cn/ // @version 0.3.7 // @description 默认去掉青柠起始页的页脚,使用 alt + t 控制搜索框的显示隐藏 使用alt + g切换时钟显示隐藏,变量全局存储,不需要每次打开都关闭或者显示了 alt+b 显示隐藏 B站热搜 // @author Hei // @match *://limestart.cn/* // @grant GM_setClipboard // @grant unsafeWindow // @grant GM_xmlhttpRequest // @grant GM_addStyle // @grant GM_getResourceText // @grant GM_getResourceURL // @connect api.bilibili.com // @connect at.alicdn.com // @connect i0.hdslb.com // @require https://lib.baomitu.com/jquery/1.12.4/jquery.min.js // @resource css https://at.alicdn.com/t/c/font_4423350_7t2u8i9k77r.css // ==/UserScript== (function () { 'use strict'; // 基础依赖 const _mainKey = 'easy_limestart' const ls = { set(key, val) { let easy_limestart_obj = window.localStorage.getItem(_mainKey); if (!easy_limestart_obj) { easy_limestart_obj = {} } else { easy_limestart_obj = JSON.parse(easy_limestart_obj) } easy_limestart_obj[key] = val; window.localStorage.setItem(_mainKey, JSON.stringify(easy_limestart_obj)) }, get(key, defaultVal = null) { let easy_limestart_obj = window.localStorage.getItem(_mainKey); if (!easy_limestart_obj) { easy_limestart_obj = {} return defaultVal } else { easy_limestart_obj = JSON.parse(easy_limestart_obj) } const val = easy_limestart_obj[key]; if (val !== undefined) { return JSON.parse(val) } return defaultVal } } //消息弹窗 const Message = { info(msg) { const delay = 2000; //多少毫秒后隐藏 const greetingContainer = document.createElement("div") greetingContainer.id = "greetingContainer" const greetingBox = document.createElement("div") greetingBox.id = "greetingBox" greetingBox.textContent = msg greetingContainer.append(greetingBox) document.body.append(greetingContainer) greetingContainer.offsetLeft; // reflow greetingBox.style.opacity = 1 greetingBox.style.transform = `translateY(0)` setTimeout(() => { greetingBox.style.opacity = 0; greetingBox.style.transform = `translateY(-100%)`; greetingBox.addEventListener("transitionend", () => { greetingContainer.remove(); }) greetingBox.addEventListener("webkitTransitionEnd", () => { greetingContainer.remove(); }) }, delay) } } // 加载B站热搜 // 去除脚标 const timer = setInterval(() => { const footer = document.querySelector("footer"); if (footer) { footer.style.display = 'none' clearInterval(timer) } }, 500); /** * 显示/隐藏搜索框 */ function showSearchCb() { const searchSuggestionContainer = document.getElementById("searchSuggestionContainer"); const menuSearchEng = document.getElementById("menuSearchEng"); const searchEl = document.getElementById("searchBar"); if (searchEl) { searchEl.style.display = showSearch ? 'block' : 'none'; } if (searchSuggestionContainer) { searchSuggestionContainer.style.display = showSearch ? 'block' : 'none'; } if (menuSearchEng) { menuSearchEng.style.display = showSearch ? 'block' : 'none'; } } let showSearch = ls.get("showSearch"); showSearchCb(); // 如果隐藏输入框,那就失去焦点 + 不要cover if (!showSearch) { document.getElementById("inputSearch").blur() document.getElementById("cover").click() } // 显示/隐藏时间框 let showTimer = ls.get("showTimer", true) function showTimerCb() { const timeContainer = document.getElementById("timeContainer"); if (timeContainer) { timeContainer.style.display = showTimer ? 'block' : 'none'; } } showTimerCb() let showBilibili = false; let isBliLoading = false; //B站热搜请求 function requestBiApi() { const getRow = async (show_name, keyword, icon) => { const src = await (new Promise((res) => { if (icon) { GM_xmlhttpRequest({ url: icon, method: 'get', responseType: 'blob', onload: (data) => { var blob = new Blob([data.response], { type: 'image/png' }); const fileReader = new FileReader() fileReader.onload = (e) => { res(e.target.result) } // readAsDataURL fileReader.readAsDataURL(blob) } }) } else { res(null) } })) const img_html = src ? `<img class="bilibili-trending-img" src="${src}" />` : '' return `<div class="setOptBox"> <span class="setOptCaption" style="margin-left: -6px;"> <a href="https://search.bilibili.com/all?keyword=${keyword}" class="link" target="_blank"><i class="icon iconfont icon-bilibili" style="padding-right: 5px;"></i>${show_name}${img_html}</a> </span> </div>` } if (isBliLoading) return; isBliLoading = true; $(".cover2.easy-limestart .pContent").html(`<div class="setGroup"> <div class="setOptBox"> <span class="setOptCaption" style="margin-left: -6px;"> <a href="javascript:void(0)" class="link" target="_blank">加载中...</a> </span> </div> </div>`) GM_xmlhttpRequest({ url: "https://api.bilibili.com/x/web-interface/wbi/search/square?limit=15&platform=web", method: "get", onload: async (data) => { const { data: { trending: { list, title, top_list } }, code, message } = JSON.parse(data.response); // console.log(code, message) if (code != 0) { Message.info(message) } else { $(".cover2.easy-limestart .pCaptionBar").html(`<span class="btnRectangle3" style="left: 5px; right: auto; top: 6px;" id="btnRefreshBli" role="button" tabindex="0">刷新</span>${title}`) // console.log(list, title, top_list) $("#btnRefreshBli").click(() => { requestBiApi() }) const rowList = [] for (const idx in list) { const { show_name, keyword, icon } = list[idx]; const row = await getRow(show_name, keyword, icon) rowList.push(row) } $(".cover2.easy-limestart .pContent .setGroup").html(rowList.join("")) isBliLoading = false; } }, onabort: () => { isBliLoading = false; }, onerror: () => { isBliLoading = false; } }) $(".cover2.easy-limestart").css({ display: "block", opacity: 1 }) $(".cover2.easy-limestart .popUp").css({ display: "block", opacity: 0, transform: 'rotate3d(1, 1, 0, 50deg)' }).offset(); $(".cover2.easy-limestart .popUp").css({ display: "block", opacity: 1, transform: 'none' }) } //B站热搜显示 function showBlibiliTrending(init = false) { // style="display: block; opacity: 1;" // style="display: block; opacity: 1; transform: none;" const dialog = `<div class="cover2 easy-limestart"> <div class="popUp" id="bilibiliTrending" style="display: block; opacity: 1; transform: none;"> <span class="btnClose" role="button" tabindex="0" title="关闭"><span class="btnCloseInner"></span></span> <div class="pCaptionBar scrolled"></div> <div class="pContent" id="contentGSet"> <div class="setGroup"> <div class="setOptBox"> <span class="setOptCaption" style="margin-left: -6px;"> <a href="javascript:void(0)" class="link" target="_blank">加载中...</a> </span> </div> </div> </div> </div> </div>` if (init) { GM_addStyle(`.cover2 { z-index: 100; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,.35); display: none; opacity: 0; transition: .25s; perspective: 1000px; } .icon-bilibili { color: #00AFE0; } .bilibili-trending-img { height: 16px; margin-left: 5px; vertical-align: -2px; } #btnRefreshBli:hover { color: #fff; background-color: var(--err-color); }`) GM_addStyle(GM_getResourceText("css")) $(document.body).append(dialog); $(".cover2.easy-limestart .btnClose").hover(() => { $(".cover2.easy-limestart .popUp").css({ display: "block", opacity: 1, transform: 'rotate3d(1, 1, 0, 5deg)' }) }, () => { $(".cover2.easy-limestart .popUp").css({ display: "block", opacity: 1, transform: 'none' }) }) $(".cover2.easy-limestart .btnClose").click(() => { showBilibili = false; $(".cover2.easy-limestart").fadeOut(100) }) } else { showBilibili = !showBilibili; if (showBilibili) { requestBiApi() } else { $(".cover2.easy-limestart").fadeOut(100) } } } showBlibiliTrending(true); // 增加键盘事件 document.body.addEventListener("keydown", (e) => { if (e.altKey && e.key.toLowerCase() === 't') { showSearch = !showSearch; showSearchCb() Message.info(showSearch ? "显示搜索框" : '隐藏搜索框') ls.set("showSearch", showSearch) } if (e.altKey && e.key.toLowerCase() === 'g') { showTimer = !showTimer; showTimerCb() Message.info(showTimer ? "显示时间" : '隐藏时间') ls.set("showTimer", showTimer) } if (e.altKey && e.key.toLowerCase() === 'b') { showBlibiliTrending() } }); console.log('start') })();