Greasy Fork is available in English.
单/双列自适应、去重定向、美化样式、PC端自动翻页、移动端悬浮底栏
- // ==UserScript==// @name 头条搜索增强// @namespace http://tampermonkey.net/// @version 1.2// @description 单/双列自适应、去重定向、美化样式、PC端自动翻页、移动端悬浮底栏// @author tutu辣么可#(greasyfork)/IcedWatermelonJuice(github)// @require https://greasyfork.org/scripts/415581-jquery%E5%BA%93/code/jquery%E5%BA%93.js?version=866373// @match https://so.toutiao.com/search*// @icon http://toutiao.com/favicon.ico// @grant GM_addStyle// @run-at document-start// @license MIT License// @data css v22.11.16.0// ==/UserScript==(function() {'use strict';const css =`[data-css-device=pc] .main{width:100% !important}[data-css-device=pc] .s-r###lt-list{display:grid;grid-template-columns:50% 50%;grid-gap:8px;margin:0 160px !important;max-width:100% !important;width:calc(100% - 320px) !important}[data-css-device=pc] .s-r###lt-list .r###lt-content:first-child,[data-css-device=pc] .s-r###lt-list .whole-row-item{grid-column-start:1;grid-column-end:3}@media (max-width:1000px){[data-css-device=pc] .s-r###lt-list{grid-template-columns:100%;width:calc(100% - 20px) !important;margin:0 10px !important}[data-css-device=pc] .s-r###lt-list .r###lt-content:first-child,[data-css-device=pc] .s-r###lt-list .whole-row-item{grid-column-start:1;grid-column-end:2}}@media (max-width:900px){[data-css-device=pc] .logoWrap_D3HTJ a:not([class]){display:none;}[data-css-device=pc] .logoWrap_D3HTJ_ .logo_3DlEdN svg{display:none;}[data-css-device=pc] .logoWrap_D3HTJ_ .logo_3DlEdN{width:40px;height:40px;background:url(http://toutiao.com/favicon.ico) no-repeat;background-size:contain;padding:0;}}@media (max-width:800px){[data-css-device=pc] .logoWrap_D3HTJ_ .logo_3DlEdN{display:none;}}[data-css-device=pc] .s-r###lt-list .r###lt-content[data-i],[data-css-device=pc] .s-r###lt-list .radius-solid-border{border:1px solid var(--black-6);border-radius:5px;padding:12px}[data-css-device=pc] .main .s-side-list{display:none !important}[data-css-device=pc] .r###lt-content .logoWrap_D3HTJ,[data-css-device=pc] .r###lt-content .wrap_2lSYxG{min-width:100% !important;}[data-css-device=pc] .r###lt-content .nav_2v7eXx{padding:16px 10px 12px !important;justify-content:center !important}[data-css-device=pc] .r###lt-content .searchWrap_14Gtni{position:absolute;left:50%;transform:translateX(-50%);max-width:588px;width:calc(100% - 20px);}[data-css-device=pc] .margin-top-24-important{margin-top:24px !important;}[data-css-device=pc] .auto-loading-notice[data-pos=bottom] span{background-image:-webkit-linear-gradient(right,#0000007f,#0000005f 25%,#0000007f 50%,#0000005f 75%,#0000007f 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;-webkit-background-size:200% 100%;-webkit-animation:streamer-text-animation 1s linear infinite;}@keyframes streamer-text-animation{0%{background-position:0 0;}100%{background-position:-100% 0;}}[data-css-device=pc] .auto-loading-notice[data-pos=center]{width:200px;height:50px;position:fixed;left:50%;top:50%;transform:translateX(-50%);color:white;line-height:50px;backdrop-filter:blur(4px);background-color:rgba(34,34,34,.3);border-radius:15px}[data-css-device=mobile] #head-bar nav{text-align:center;}[data-css-device=mobile] #r###lts{display:grid;grid-template-columns:repeat(2,calc(50% - 5px));grid-gap:10px;padding:10px 10px 20px;}[data-css-device=mobile][data-css-page=xiaoshipin] #r###lts,[data-css-device=mobile][data-css-page=atlas] #r###lts{display:block !important;}@media (max-width:800px){[data-css-device=mobile] #r###lts{grid-template-columns:100%;}}[data-css-device=mobile] #r###lts .r###lt-content .l-card-bg{background-color:transparent !important;}[data-css-device=mobile] #r###lts .r###lt-content{background-color:var(--bg-card);border-radius:15px;height:100%;}[data-css-device=mobile] .ghost-search-bar{position:fixed;bottom:0;left:50%;width:100% !important;transform:translateX(-50%);z-index:99999;border-radius:15px;}[data-css-device=mobile] .ghost-search-bar input{text-align:center !important;margin-left:-30px;}[data-css-device=mobile] #page-bottom .logo_3Mdxl3{display:none;}[data-css-device=mobile] #page-bottom .from_1OKQFa{display:none;}[data-css-device=mobile] #page-bottom .formWrap{display:none;}`;const device = location.search.search("dvpf=pc") >= 0 ? "pc" : "mobile";const enableMap = {map: {pc: ["synthesis", "information", "user", "question", "weitoutiao", "baike", "music"],mobile: ["*"]},check: function(d, p) {var m = this.map,ck=m.hasOwnProperty(d) && (m[d].indexOf("*") > -1 || m[d].indexOf(p) > -1);$("html").attr("data-css-device", ck?d:"");$("html").attr("data-css-page", ck?p:"");return ck}}var page = new URL(location.href).searchParams.get("pd") || "synthesis";GM_addStyle(css);if (!enableMap.check(device, page)) {return}if (device === "pc") {function otherCss(dom, index = 1) {dom = dom instanceof jQuery ? dom : $(dom);dom.attr("data-res-id", index);$(`<div class="r###lt-content whole-row-item radius-solid-border text-center current-page-notice"><a href="javascript:void(0)" style="float:left;padding:0 12px"><< 首页</a><span>当前页:第${index}页</span><a href="javascript:void(0)" style="float:right;padding:0 12px">导航 >></a></div>`).insertBefore(dom.children(".r###lt-content[data-i=0]:first"));dom.find(".r###lt-content.current-page-notice a").click((e) => {e = $(e.target).text();if (/首页/.test(e)) {$("html,body").animate({scrollTop: 0}, 500);} else if (/导航/.test(e)) {$("html,body").animate({scrollTop: dom.offset().top + dom.height() - $(window).height()}, 500);}})dom.children(".r###lt-content:not([data-i])").each((i, e) => {e = $(e);if (e.children("[shared]")[0]) {e.addClass("whole-row-item text-center margin-top-24-important");if (/下一页|上一页/.test(e.text())) {e.attr("data-nav-id", index);e.find("a[data-search]").each((i, a) => {a = $(a);if (a.text() === "下一页") {a.data("targetID", index + 1)} else if (a.text() === "上一页") {a.data("targetID", (index - 1) < 1 ? 1 : (index - 1))} else {a.data("targetID", a.text())}a.click((e) => {e.preventDefault()navJump(a.data("targetID"));})})} else {e.hide();}}})dom.children(".r###lt-content[data-i]:last").addClass("whole-row-item").hide();console.group();dom.find(".r###lt-content[data-i] a").each((i, e) => {if (e.href.indexOf("/search/jump?url=") !== -1) {var url = new URL(e.href).searchParams.get("url");console.log("重定向: " + e.href + " --> " + url)e.href = url;}})console.groupEnd();}function navJump(id) {id = typeof id === "number" ? id : parseInt(id);if (!$(".s-r###lt-list").is(":visible") || !id) {return false}function load(id, waitTime = false) {if ($(".s-r###lt-list").length >= id) {$(".auto-loading-notice[data-pos=center]").remove();var target = $(`.s-r###lt-list[data-res-id=${id}]`).is(":visible") ? $(`.s-r###lt-list[data-res-id=${id}]`) : $(`.s-r###lt-list:last`);if (waitTime) {setTimeout(() => {$("html,body").animate({scrollTop: target.offset().top - 85}, 500);}, 210)} else {$("html,body").animate({scrollTop: target.offset().top - 85}, 500);}return false}if ($(".auto-loading-notice[data-pos=center]").is(":visible")) {$(".auto-loading-notice[data-pos=center] span").text(`正在加载(${$(".s-r###lt-list").length}/${id})`)} else {$("body").append(`<div class="auto-loading-notice text-center" data-pos="center"><span>正在加载(${$(".s-r###lt-list").length}/${id})</span></div>`);}autoNextPage(".s-r###lt-list:last", () => {setTimeout(() => {load(id, true);}, 0)})}load(id);}function autoNextPage(dom, fn1, fn2) {dom = dom instanceof jQuery ? dom : $(dom);dom.find(".r###lt-content:not([data-i]).whole-row-item a").each((i, e) => {if (e.innerText === "下一页" && /^https?:\/\//i.test(e.href)) {$(".auto-loading-notice[data-pos=bottom]").remove();dom.append(`<div class="auto-loading-notice r###lt-content whole-row-item text-center" data-pos="bottom"><span>正在加载下一页</span></div>`);$.ajax({url: e.href,type: "GET",timeout: 10000,success: (r) => {r = $(r).find(".s-r###lt-list");if (r.length === 1) {if (!$(`.s-r###lt-list[data-res-id=${$(e).data("targetID")}]`)[0]) {otherCss(r, $(e).data("targetID"));r.css("padding-top", "0");r.find(".r###lt-content:first-child").hide();$(".auto-loading-notice[data-pos=bottom]").remove();$(".main").append(r);dom.animate({paddingBottom: 0}, 200);}typeof fn1 === "function" && fn1();}},error: (r) => {if (confirm("请求失败或超时,是否直接打开网页?")) {location.href = e.href;}$(".auto-loading-notice[data-pos=bottom]").remove();typeof fn2 === "function" && fn2();console.log("请求失败或超时", r)}})}})}$(".s-r###lt-list").ready(() => {otherCss(".s-r###lt-list");var loadFlag = true;$(document).scroll(function() {if (loadFlag && $(window).scrollTop() + $(window).height() > $(document).height() -50) {loadFlag = false;autoNextPage(".s-r###lt-list:last", () => {setTimeout(() => {loadFlag = true;}, 500)}, () => {$("html,body").animate({scrollTop: $(window).scrollTop() - 100}, 200, () => {loadFlag = true;});})}});});} else {$("#head-bar form").ready(() => {var ghostBar = $("#head-bar form").clone();ghostBar.find("i").attr("class","search-icon_TKyEHg");ghostBar.find("a").hide();ghostBar.find("input").attr("readonly", "readonly");ghostBar.addClass("ghost-search-bar");ghostBar.click(() => {$("#head-bar input").click();})ghostBar.hide();ghostBar.extend({"display": function(type, animateSpan) {var that = this;if (!type || !animateSpan || type === that.data("animate")) {return false}if (type === "show" && !that.is(":visible")) {that.data("animate", type);that.css("opacity", "0");that.css("bottom", "-65px");that.show();that.animate({opacity: 1,bottom: "0"}, animateSpan, "swing", () => {that.css("opacity", "");that.data("animate", "");});} else if (type === "hide" && that.is(":visible")) {that.data("animate", type);that.css("opacity", "1");that.animate({opacity: 0}, animateSpan, "linear", () => {that.hide();that.css("opacity", "");that.data("animate", "");});}}})$("#page-main").append(ghostBar);function changeGhostDisplay() {var scroll = $(window).scrollTop(),scrollMin = $("#page-head").height(),scrollMax = $("#bottom-bar").offset().top - $(window).height();if (scroll >= scrollMin && scroll <= scrollMax) {ghostBar.display("show", 300);} else {ghostBar.display("hide", 200);}}changeGhostDisplay();$(document).scroll(function() {changeGhostDisplay()});$("#r###lts .r###lt-content a").each((i, e) => {var url = new URL(e.href);if (url.pathname === "/search/jump" && url.search.indexOf("url=") !== -1) {url = url.searchParams.get("url");console.log("重定向: " + e.href + " --> " + url)e.href = url;}})})}})();