// ==UserScript== // @name tieba page // @namespace http://tampermonkey.net/ // @version 1.025 // @author fthvgb1 // @match https://tieba.baidu.com/* // @match https://tiebac.baidu.com/* // @match http://tieba.baidu.com/* // @grant GM.openInTab // @grant GM_xmlhttpRequest // @description 显示手机版贴吧里被隐藏的楼层与翻页按钮,回贴,顺便拦点儿广告 // ==/UserScript== (function () { 'use strict'; function jpg(v) { let fimgs = v.querySelectorAll('span[class="wrap pbimgwapper"]>img.BDE_Image'); if (fimgs.length > 0) { fimgs.forEach(img => { img.src = img.src.replace('tiebapic', 'imgsrc').replace('tiebapic', 'imgsrc'); }) } let imgs = v.querySelectorAll('.pb_img_item:not([data-type="gif"]),[data-class="BDE_Image"]:not([data-type="gif"])'); if (imgs.length > 0) { imgs.forEach(value => { let h = value.dataset.url.replace('tiebapic', 'imgsrc').replace('tiebapic', 'imgsrc'); if (h.indexOf('http://') === 0) { //h = 'https://image.baidu.com/search/down?url=' + h; } let tmp = decodeURIComponent(h.split('&src=')[1]).split('/'); tmp = tmp[tmp.length - 1]; value.outerHTML = `
`; }) } } function gif(v) { let imgs = v.querySelectorAll('[data-type="gif"]'); if (imgs.length > 0) { imgs.forEach(value => { let h = value.dataset.url.replace('tiebapic', 'imgsrc').replace('tiebapic', 'imgsrc'); let url = h.split('&src=')[1]; let ssr = decodeURIComponent(url); let x = ssr.split('/'); let id = x[x.length - 1]; value.outerHTML = `
gif
`; }) } } function delElement(selectors) { selectors.forEach(value => { let x = document.querySelector(value); if (x) { x.parentNode.removeChild(x) } }); } function replayPage(res, el, call) { let ht = (new DOMParser()).parseFromString(res.data.floor_html, 'text/html'); let lii = ht.querySelectorAll('li'); let x = []; lii.forEach(function (li, index) { let uuu = li.querySelector('.left>div .user_name'); let ct = li.querySelector('.user_name + p').innerText; let info = JSON.parse(li.dataset.info); let username = uuu.outerHTML; username = username.replace('', ` ${ct}`).replace('javascript:;', `/home/main?un=${info.un}`); let s = li.querySelector('.content span'); s.className = 'floor_content'; let c = li.querySelector('.content').innerHTML; let div = `
`; li.innerHTML = div; let ll = document.createElement('li'); ll.classList.add('list_item_floor'); ll.classList.add('j_list_item_floor'); ll.innerHTML = div; ll.setAttribute('data-info', li.dataset.info); llxx(ll) x.push(ll); }); if (call) { call(x); } x.forEach(v => { url(v); el.appendChild(v); }); } function tpage(tot, el, call) { tot = parseInt(tot); let d = document.createElement('div'); d.classList.add('pagexx'); d.style.cssText = 'text-align: center;margin:5px 0 2px'; let a = document.createElement('a'); a.href = 'javascript:void(0)'; a.innerText = '<'; let i = document.createElement('input'); d.append(a); a.style.cssText = ` height: 20px; line-height: 20px; display: inline-block; text-align: center; color: #fff; width: 20px; background-color: rgba(0,0,0,.3); `; let r = a.cloneNode(true); a.classList.add('l'); [a, r].forEach(v => { v.addEventListener('click', ev => { let r = parseInt(i.dataset.r); if (v.classList.contains('r') && r < tot) { ppage(r + 1); } if (v.classList.contains('l') && r > 1) { ppage(r - 1); } }); }); d.appendChild(a); d.appendChild(i); d.appendChild(r); el.parentNode.appendChild(d); r.innerText = '>'; r.classList.add('r'); i.style.width = '60px'; i.style.margin = '0 6px'; i.style.textAlign = 'center'; i.type = 'text'; i.value = '1/' + tot; i.dataset.o = tot; i.dataset.r = '1'; function ppage(page) { i.dataset.r = page; i.type = 'text'; i.value = page + '/' + tot; el.innerHTML = ''; if (call) { call(page); } } i.addEventListener('click', ev => { i.value = ''; i.type = 'number'; i.step = '1'; i.min = '1'; }); i.addEventListener('keyup', ev => { if (ev.key === 'Enter') { i.blur(); } }); i.addEventListener('blur', ev => { let page = parseInt(i.value); if (page > 0 && page <= tot) { ppage(page); } else { i.type = 'text'; i.value = i.dataset.r + '/' + tot; } }) } function lo(reference, target) { //因为我们会将目标元素的边框纳入递归公式中,这里先减去对应的值 let result = { left: -target.clientLeft, top: -target.clientTop }; let node = target; while (node !== reference && node !== document) { result.left = result.left + node.offsetLeft + node.clientLeft; result.top = result.top + node.offsetTop + node.clientTop; node = node.parentNode; } if (isNaN(reference.scrollLeft)) { result.right = document.documentElement.scrollWidth - result.left; result.bottom = document.documentElement.scrollHeight - result.top; } else { result.right = reference.scrollWidth - result.left; result.bottom = reference.scrollHeight - result.top; } return result; } function ab(e) { let f = e.querySelector('#pb_imgs_div'); if (f) { let dd = []; let num = e.querySelector('img.pic_icon').parentElement.innerText.replace('图', ''); num = parseInt(num); f.querySelectorAll('#pb_imgs_div>div').forEach((d, i) => { let div = document.createElement('div'); div.dataset.url = d.dataset.url; div.dataset.class = 'BDE_Image'; dd.push(div); }); if (num > 3) { let pic = decodeURIComponent(dd[0].dataset.url).split('/'); pic = pic[pic.length - 1].split('.')[0]; let word = document.querySelector('a.post_title_text').innerText.replace('吧', ''); let kz = document.querySelector('html').innerHTML.match(/kz: "(\d+)"/)[1]; let width = Math.min(window.innerHeight, window.innerWidth) * 3; let url = `/mo/q/album?word=${word}&tid=${kz}&pic_id=${pic}&see_lz=1&img_quality=100&direction=2&img_width=${width}&img_height=2000`; $.ajax({ url: url, async: false, dataType: 'json', success: res => { let imgs = res.data.images; dd = [] imgs.forEach((img, i) => { if (i > num - 1) { return; } let div = document.createElement('div'); div.dataset.url = img.url.replace('&src=', '&src='); if (div.dataset.url.indexOf('&src') < 0) { div.dataset.url += '?&src=' + div.dataset.url; } div.dataset.class = 'BDE_Image'; dd.push(div); }) } }); } let pb = document.createElement('div'); dd.forEach(v => { pb.appendChild(v); }); let pp = document.querySelector('#pb_imgs'); if (pp) { let parentNode = pp.parentElement; pb.className = 'pb_less_imgs'; pb.id = 'pb_less_imgs'; parentNode.insertBefore(pb, pp); parentNode.removeChild(pp); } } } function url(li) { let as = li.querySelectorAll('a'); as.forEach(a => { let src = a.href; if (src.search(/(fr=share)|(client_type=2)/) > -1) { let href = src.match(/(https?:\/\/tieba\.baidu\.com\/p\/\d+)/); if (href && href.length > 0) { a.href = href[1]; a.innerText = a.href; } } }) } function gmPage(url, el, page, call) { GM_xmlhttpRequest({ method: 'GET', url: url, headers: { "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36' }, onload: function (res) { let lis = (new DOMParser()).parseFromString(res.responseText, 'text/html'); let tmp = lis.querySelectorAll('li'); let arr = [...tmp]; arr.splice(tmp.length - 1, 1); if (page === 1 && el.childElementCount > 0) { arr.splice(0, 2); } arr.forEach(li => { let o = JSON.parse(li.getAttribute('data-field')); let n = { pid: o.spid, un: o.user_name } let ell = document.createElement('li'); ell.className = 'list_item_floor j_list_item_floor'; ell.setAttribute('data-info', JSON.stringify(n)) ell.setAttribute('pid', o.spid); let time = li.querySelector('.lzl_time').innerHTML; let h = li.querySelector('a[class="at j_user_card "]'); let he = `${h.getAttribute('username') + (h.innerText !== h.getAttribute('username') ? '(' + h.innerText + ')' : '')}`; let re = li.querySelector('.lzl_content_main'); let rrr = re.querySelector('.at'); let rrrxx = ''; if (rrr) { rrrxx += `回复 ${rrr.innerText} : ` re.removeChild(rrr) } let ly = re.innerHTML.trim(); if (ly.indexOf('回复') === 0) { rrrxx += re.innerHTML.replace('回复', '').replace(':', ''); } else { rrrxx += re.innerHTML; } ell.innerHTML = `
`; llxx(ell) el.append(ell) }) if (call) { call() } } }); } function llxx(li) { let info = JSON.parse(li.dataset.info); if (!window.lz) { lzl(); } let rep = li.querySelector('a.user_name'); let xx = rep.innerHTML; if (':' === xx[xx.length - 1]) { xx = xx.substring(0, xx.length - 1) } let x = '' let i = ` 楼主` let y = ':' if (window.lz.un === info.un || window.lz.name_show === info.un) { x = i } rep.outerHTML = `${xx}` + x + y; let c = li.querySelector('.floor_content a[href*="/home/main?un="]') if (!c) { c = li.querySelector('.floor_content a[href*="jump?un="]'); if (c) { c.href = '/home/main?un=' + c.innerText } } if (c) { let un = c.href.split('un=')[1]; un = decodeURI(un); if (window.lz.un === un || window.lz.name_show === un) { c.outerHTML += i } } } function t() { lz(); fixHeadImages(); $("ul#pblist>li").forEach(function (e, iii) { let ff = f(e); if (ff === 1) { if (!window.lz) { window.lz = JSON.parse(e.dataset.info) } ab(e); } let videos = e.querySelectorAll('.video'); if (videos.length > 0) { videos.forEach(video => { let src = video.getAttribute('data-vhsrc'); let img = video.querySelector('img'); let hr = video.getAttribute('data-vsrc'); if (src) { let t = video.parentElement.querySelector('.net_search_url'); if (t) { src = t.dataset.vhsrc } video.outerHTML = ``; } else if (hr && hr.indexOf('bilibili.com') > -1) { let av = hr.match(/av(\d+)/)[1] video.outerHTML = `` } else if (hr && hr.indexOf('youku.com') > -1) { let r = hr.split('id_')[1].replace('.html', '') video.outerHTML = `` } else if (hr && hr.indexOf('tudou.com') > -1) { // 土豆已死,有事请烧纸 悲伤的故事 ......... } }); } url(e); delElement(['#diversBanner', '.j_videoFootDownBtn']); gif(e); jpg(e); let ee = $(e); let tid = ee.attr("tid"); let x = ee.find('.list_item_top a.j_report_btn'); let kz = 0; if (x && x.length > 0) { kz = x[0].href.match(/tid=(\d+)&/); kz = kz[1]; } let lzll = e.querySelector('.flist'); if (lzll) { [...lzll.children].forEach(li => { llxx(li) }) } let floor = e.getElementsByClassName('pb_floow_load'); if (floor.length > 0) { let a = floor[0]; let text = floor[0].textContent; let url = `/t/p/${tid}`; let num = parseInt(text.match(/\d+/)[0]); a.innerText = `还有${num}条回复`; a.dataset.url = url; a.classList.remove('j_enter_lzl_daoliu'); $(a).unbind('click'); let orgnum = num; let page = 2; let tot = Math.ceil(orgnum / 10); let el = a.previousElementSibling; a.addEventListener('click', function () { let that = this; if (num === orgnum) { let url = this.getAttribute('data-url'); if (num <= 8) { $.get(url, function (rst) { replayPage({data: {floor_html: rst}}, el, ls => { ls.splice(0, 2) that.parentNode.removeChild(that); }); }); return } if (GM_xmlhttpRequest) { const tt = Math.ceil((new Date()).getTime()); url = `/p/comment?tid=${kz}&pid=${tid}&pn=1&t=${tt}`; gmPage(url, el, 1, () => { num -= 8; that.innerText = `还有${num}条回复`; if (orgnum > 10) { a.style.display = 'none'; tpage(tot, el, (page) => { if (a.style.display !== 'none') { a.style.display = 'none'; } let tt = Math.ceil((new Date()).getTime()); let url = `/p/comment?tid=${kz}&pid=${tid}&pn=${page}&t=${tt}`; gmPage(url, el, page, function () { let l = lo(document, el); window.scrollTo({top: l.top - 20, left: 0, behavior: "smooth"}); }); }); } }) } else { $.get(url, function (rst) { replayPage({data: {floor_html: rst}}, el, ls => { ls.splice(0, 2) }); if (num <= 8) { that.parentNode.removeChild(that); } else { num -= 8; that.innerText = `还有${num}条回复`; if (orgnum > 18) { a.style.display = 'none'; tpage(tot, el, (page) => { if (a.style.display !== 'none') { a.style.display = 'none'; } let url = `/mo/q//flr?fpn=${page}&kz=${kz}&pid=${tid}&is_ajax=1&has_url_param=0&template=lzl`; $.get(url, res => { replayPage(res, el); let l = lo(document, el); window.scrollTo({top: l.top - 20, left: 0, behavior: "smooth"}); }) }); } } }); } } else { if (GM_xmlhttpRequest) { const tt = Math.ceil((new Date()).getTime()); url = `/p/comment?tid=${kz}&pid=${tid}&pn=${page}&t=${tt}`; gmPage(url, el, page, () => { let i = el.parentNode.querySelector('.pagexx input'); if (i) { i.dataset.r = `${page}`; i.type = 'text'; i.value = page + '/' + tot; } ++page; if (num > 10) { num -= 10; that.innerText = `还有${num}条回复`; } else { that.parentNode.removeChild(that); } }) } else { let url = `/mo/q//flr?fpn=${page}&kz=${kz}&pid=${tid}&is_ajax=1&has_url_param=0&template=lzl`; $.get(url, function (res) { replayPage(res, el); let i = el.parentNode.querySelector('.pagexx input'); if (i) { i.dataset.r = `${page}`; i.type = 'text'; i.value = page + '/' + tot; } ++page; if (num > 10) { num -= 10; that.innerText = `还有${num}条回复`; } else { that.parentNode.removeChild(that); } }) } } }); } }); killCheckUrl(); } function lz() { let lz = document.querySelector('span.poster_only'); if (lz) { let r = document.createElement('span'); r.classList.add('poster_only'); r.style.marginLeft = '5px'; r.innerText = '倒序看帖'; lz.parentNode.insertBefore(r, lz); lz.onclick = null; let h = location.href; let ff = 0; let rr = 0; if (h.indexOf('see_lz=1') > -1) { lz.textContent = '取消只看楼主'; h = h.replace('see_lz=1', 'see_lz=0'); ff = 1; } if (h.indexOf('r=1') > -1) { r.textContent = '取消倒序看帖'; h = h.replace('r=1', 'r=0'); rr = 1; } r.addEventListener('click', (e) => { if (rr === 0) { h = h.indexOf('?') < 0 ? h + '?r=1' : (h[h.length - 1] === '&' ? (h + 'r=1&') : (h + '&r=1')); h = h.replace(/pn=\d+/, 'pn=' + (totalPage - 1) * 30); } location.href = h; e.stopPropagation(); }, true); lz.addEventListener('click', (e) => { if (ff === 0) { h = h.indexOf('?') < 0 ? h + '?see_lz=1' : h + '&see_lz=1'; } location.href = h; e.stopPropagation(); }, true); } } function f(value) { let dt = JSON.parse(value.getAttribute('data-info')); let fl = 0; if (dt) { fl = dt.floor_num; let l = document.createElement('span'); l.style.color = 'green'; l.textContent = fl + '楼'; if (fl === 1) { l.textContent = '楼主'; } else if (fl === 2) { l.textContent = '沙发'; } else if (fl === 3) { l.textContent = '板凳'; } value.querySelector('.list_item_time').parentNode.appendChild(l); } return fl; } function check() { let ua = navigator.userAgent.toLowerCase(); return ua.indexOf('mobile') > -1 || ua.indexOf('phone') > -1; } function p() { let c = document.querySelector('.slide_frame'); let MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; let observer = new MutationObserver((mutations) => { mutations.forEach(item => { if (item.addedNodes.length > 0) { item.addedNodes.forEach(node => { let img = node.querySelector('img'); if (img) { let tmp = img.src.split('&src='); let src = img.src; if (tmp.length > 1) { let newSrc = decodeURIComponent(tmp[1]); img.src = newSrc; let tt = newSrc.split('/'); let i = document.querySelector(`img[data-url="${tt[tt.length - 1]}"]`); if (i && i.src !== newSrc) { i.src = newSrc; i.addEventListener('click', evt => { i.src = src; }); } } else { let x = img.src.split('/'); let u = x[x.length - 1]; let i = document.querySelector(`img[data-url="${u}"]`); if (i && i.src !== img.src && i.dataset.type === 'gif') { i.src = img.src; } else if (i && i.src !== img.src && !i.dataset.type) { i.src = img.src; i.addEventListener('click', evt => { i.src = i.parentNode.dataset.url; }); } } } }) } }) }); observer.observe(c, { childList: true, }); } function createTime() { let url = location.href.replace('&mo_device=1', ''); if (url[url.length - 1] === '&') { url = url + 'tab=main&' } url = decodeURIComponent(url); if (url.indexOf('/mo/') > -1) { let word = /word=(.*?)&/.exec(url)[1]; url = url.replace('mo/q/m', 'f').replace(/word=(.*?)&/, 'kw=' + word + '&'); } if (url.indexOf('lp=sfrs_good_area_link') > -1) { url += 'tab=good&' } //debugger GM_xmlhttpRequest({ method: 'GET', url: url, headers: { "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36' }, onload: function (res) { let r = (new DOMParser()).parseFromString(res.responseText, 'text/html'); let w = r.getElementById('pagelet_html_frs-list/pagelet/thread_list').innerHTML; let ul = w.replace('', ''); let u = document.createElement('div'); u.innerHTML = ul; let lis = u.querySelectorAll('li.j_thread_list'); if (lis.length > 0) { lis.forEach(li => { let time = li.querySelector('.is_show_create_time'); if (!time) { return } time = time.textContent; let tid = li.dataset.tid; if (tid !== null || tid !== 'null') { let tar = document.querySelector('li[data-tid="' + tid + '"] .ti_author_icons'); let ttt = document.querySelector('li[data-tid="' + tid + '"] .ti_time'); if (!tar) { return; } let ki = li.querySelector('.tb_icon_author_rely'); if (!ki) { return; } ttt.innerHTML = ki.title.split(':')[1] + '  ' + ttt.innerHTML; let d = document.createElement('span'); d.style.marginLeft = '1rem'; d.style.color = '#9999b3'; d.innerText = time; tar.appendChild(d); } }) } }, }); } function slio(els) { //let lis = document.querySelectorAll('#frslistcontent>li'); let startX = 0; let endX = 0; let startY = 0; let endY = 0; els.forEach(li => { li.addEventListener('touchstart', evt => { startX = evt.changedTouches[0].screenX; startY = evt.changedTouches[0].screenY; }); li.addEventListener('touchmove', evt => { endX = evt.changedTouches[0].screenX; endY = evt.changedTouches[0].screenY; }); li.addEventListener('touchend', evt => { if ((endX - startX) > 100 && Math.abs(endY - startY) <= 100) { let url = li.querySelector('li.tl_shadow>a.ti_item').href; window.open(url, '_blank'); } if ((startX - endX) > 100 && Math.abs(endY - startY) <= 100) { GM.openInTab(li.querySelector('li.tl_shadow>a.ti_item').href, true); } }) }) } function list() { slio(document.querySelectorAll('#frslistcontent>li')); delElement([ '.frs_daoliu_for_app', '.tl_shadow_for_app_modle', '.footer_logo', '.footer_link_highlight', '.appBottomPromote', '.appPromote', ]); let ads = document.querySelectorAll('li.tl_shadow_for_app'); if (ads.length > 0) { let url = document.querySelector('.tl_shadow_for_app').parentNode.querySelector('a.j_common').href; ads.forEach(v => { let a = v.querySelector('a.j_enter_for_app'); let tid = v.getAttribute('data-tid'); a.href = url.replace(/\/(\d+)\?/.exec(url)[1], tid); a.classList.remove('tl_shadow_for_app'); }) } createTime(); let list = document.querySelector('#tlist'); let MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; let observer = new MutationObserver((mutations) => { if (mutations.length > 0) { createTime(); op(); slio(document.querySelectorAll('#frslistcontent>li')); } }); observer.observe(list, { childList: true, }); function op() { let lis = document.querySelectorAll('li.tl_shadow>a.ti_item'); if (lis.length > 0) { lis.forEach(value => { let url = `mo/q/m?kz=${value.dataset.tid}`; let w = value.querySelector('.ti_icon_huati'); if (w) { url += '&post_type=normal&' } value.href = url; }) } } op(); } function ft(event) { event.preventDefault(); } function god() { let targetNode = document.querySelector("#glob"); let MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; window.onpopstate = e => { if (targetNode.style.visibility === 'hidden' && window.hhxx === 1) { targetNode.style.visibility = 'visible'; window.hhxx = 0; document.querySelector('.ui_slider_hybrid').removeEventListener('touchmove', ft) } }; let observer = new MutationObserver((mutations) => { let m = mutations[0]; if (m.target.style.display === 'none') { document.querySelector('.ui_slider_hybrid').addEventListener('touchmove', ft); setTimeout(() => { m.target.style.display = 'block'; m.target.style.visibility = 'hidden'; window.hhxx = 1; let ui = document.querySelector('.ui_slider_hybrid'); if (ui.style.display === 'block') { ui.style.top = '-44px'; } }, 300); } }); let observerOptions = { attributes: true, attributeFilter: ['style'] }; observer.observe(targetNode, observerOptions); (new MutationObserver(m => { if (m[0].addedNodes.length > 0) { let n = m[0].addedNodes[0]; n.parentNode.removeChild(n); } })).observe(document.querySelector('#po_list'), { childList: true, }); } function lzl() { let kz = document.querySelector('html').innerHTML.match(/kz: "(\d+)"/)[1]; let url = `/mo/q?kz=${kz}`; $.ajax({ url: url, async: false, type: 'get', success: (res) => { let html = (new DOMParser()).parseFromString(res, 'text/html'); let lz = html.querySelector('#pblist li') if (!lz) { debugger } window.lz = JSON.parse(lz.dataset.info) } }) } function killCheckUrl() { let urls = document.querySelectorAll('a[href*="/mo/q/checkurl"]'); [...urls].forEach(a => { const url = decodeURIComponent(a.href).split('url=')[1] a.href = url; a.target = '_blank'; }) } function detail() { let title = document.querySelector('#i_head .post_title_text'); if (title !== null) { const ur = title.href.replace('f?kw=', 'mo/q/m?word=') const u = new URL(ur); u.searchParams.set('tn6', 'bdISP'); u.searchParams.set('tn4', 'bdKSW'); u.searchParams.set('tn7', 'bdPSB'); u.searchParams.set('sub4', '进吧'); u.searchParams.set('pn', '0'); title.href = u.toString() } god(); p(); reply(); document.querySelectorAll('ul#pblist>li').forEach(value => { if (value.classList.contains('class_hide_flag')) { value.classList.remove('class_hide_flag'); } }); t(); delElement([ '.img_desc', '.father-cut-recommend-normal-box', '.father-cut-daoliu-normal-box', '#diversBanner', '.footer_logo', '.j_footer_link', '.frs_daoliu_for_app', '.j_videoFootDownBtn', '.appBottomPromote', '.appPromote', ]); let lxf = document.querySelector('.father-cut-pager-class-no-page') if(lxf){ lxf.classList.remove('father-cut-pager-class-no-page'); } let list = document.querySelector('ul#pblist'); let MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; let observer = new MutationObserver((mutations) => { t(); }); observer.observe(list, { childList: true }); } function fixHeadImages() { const e = document.querySelectorAll("#pblist li .list_item_top_avatar img"); e.forEach(img => { let src = img.src; //http://gss3.bdstatic.com/84oSdTum2Q5BphGlnYG/timg?mowebapp&quality=80&size=b72_72&cut_x=0&cut_w=0&cut_y=0&cut_h=0&sec=1369815402&di=d90486ddc230fa80b609654f1ef9491b&wh_rate=null&src=http%3A%2F%2Ftb.himg.baidu.com%2Fsys%2Fportrait%2Fitem%2Ftb.1.a55b4bff.yLhcG9k0TG9vPBPgt_D19A.jpg if (src.indexOf('http://') === 0) { const u = new URL(src) if (u.searchParams.has('src')) { src = decodeURIComponent(u.searchParams.get('src')); src = src.replace(/.*\.baidu.com\//, '') src = 'https://gss0.bdstatic.com/6LZ1dD3d1sgCo2Kml5_Y_D3/' + src; } img.src = src; } }) } let book, svgss; function clickControl() { let el = ['list_item_top_name', 'j_new_header_reply', 'list_item_user_wrap', 'user_img', 'user_name', 'icon_tieba_edit', 'reply_num', 'for_app_label_text_tag']; document.querySelector('body').addEventListener('click', ev => { for (let i in el) { if (ev.target.classList.contains(el[i])) { ev.stopPropagation(); ev.preventDefault(); } } if (ev.target.tagName === 'svg') { if ([...svgss].indexOf(ev.target.parentNode)) { return; } ev.stopPropagation(); ev.preventDefault(); if (ev.target.innerHTML.indexOf('remind_on') > -1) { location.href = '/mo/q/msg' } if (ev.target.innerHTML.indexOf('topbar_search') > -1) { location.href = '/mo/q/searchpage' } } if (ev.target.tagName === 'A' && ev.target.classList.contains('notice')) { ev.stopPropagation(); ev.preventDefault(); location.href = '/mo/q/msg'; } if (ev.target.tagName === 'A' && ev.target.className === 'item comment itemonly') { ev.stopPropagation(); ev.preventDefault(); } if (ev.target.classList.contains('j_new_header_reply')) { F.use('spb/widget/normal_post_list', function (threadList) { if (!window.xxLL) { window.xxLL = new threadList(window.conxx) } window.xxLL.floorReply(ev); }); } if (ev.target.classList.contains('user_img')) { ev.stopPropagation(); ev.preventDefault(); let name = $(ev.target).parents('li').find('span.user_name').text(); location.href = `/home/main?un=${name}`; } let ii; if (ev.target.tagName === 'IMG' && (ii = ev.target.parentNode, ii.classList.contains('ti_avatar'))) { ev.stopPropagation(); ev.preventDefault(); location.href = ii.dataset.url; } if (ev.target.classList.contains('user_name')) { ev.stopPropagation(); ev.preventDefault(); location.href = `/home/main?un=${ev.target.innerText}`; } if (ev.target.tagName === 'SPAN' && ev.target.classList.contains('forumname')) { ev.preventDefault(), ev.stopPropagation(); if (ev.target.innerText.lastIndexOf('吧') === ev.target.innerText.length - 1) { ev.target.innerText = ev.target.innerText.substring(0, ev.target.innerText.length - 1) } location.href = `/f?kw=${ev.target.innerText}&pn=0&`; } if (ev.target.tagName === 'SPAN' && (ev.target.classList.contains('createtime') || ev.target.classList.contains('ti_time') || ev.target.classList.contains('ti_author'))) { ev.stopPropagation(); ev.preventDefault(); } if (ev.target.tagName === 'SPAN' && ev.target.classList.contains('btn_icon')) { ev.stopPropagation(); ev.preventDefault(); } if (ev.target.tagName === 'SPAN' && ev.target.classList.contains('message')) { ev.stopPropagation(); ev.preventDefault(); location.href = '/mo/q/msg'; } if (ev.target.classList.contains('j_like')) { ev.stopPropagation(); ev.preventDefault(); let a = /function\(SignArrow\)\{(.*?)\}\)\;\}\)/.exec($('html').html())[1].replace('new SignArrow', ''); let _sl = (new Function(a + ';return _sl'))(); F.use(['sfrs/widget/sign_arrow'], SignArrow => { let sl = new SignArrow(_sl); sl.likeHandle(); }); } if (ev.target.classList.contains('bookmark_icon')) { ev.stopPropagation(); ev.preventDefault(); let a = /function\(MoreNewSpinner\)\{((.*?)moreNewSpinner\.init\(\);)/.exec($('html').html())[2].replace('new MoreNewSpinner', ''); let c = (new Function(a + ';return moreNewSpinner'))(); F.use(['spb/widget/more_newspinner'], MoreNewSpinner => { if (!book) { book = new MoreNewSpinner(c); book.init(); } book.handleCollect(ev); }); } if (ev.target.classList.contains('j_sign')) { ev.stopPropagation(); ev.preventDefault(); let a = /function\(SignArrow\)\{(.*?)\}\)\;\}\)/.exec($('html').html())[1].replace('new SignArrow', ''); let _sl = (new Function(a + ';return _sl'))(); F.use(['sfrs/widget/sign_arrow'], SignArrow => { let sl = new SignArrow(_sl); sl.signHandle(); }); } if (ev.target.tagName === 'H4' && ev.target.classList.contains('title')) { ev.stopPropagation(); ev.preventDefault(); location.href = `/home/main?un=${ev.target.innerText}`; } if (ev.target.classList.contains('icon_tieba_edit')) { //todo 发帖 似乎没相关的调用模块??? } //console.log(ev.target, ev.target.tagName); }, true); } function reply() { let h = document.querySelector('html').innerHTML; let co = /spb\/widget\/normal_post_list', function \(threadList\) \{ new threadList\((.*?)}\);/.exec(h); let con = co[1] + '}'; let conf = (new Function("return " + con))(); window.conxx = conf; window.xxLL = null; document.querySelectorAll('.j_nreply_btn').forEach(value => { value.addEventListener('click', evt => { evt.preventDefault(); evt.stopPropagation(); window.xxLL.floorReply(evt); }) }) } function fnav() { let d = document.createElement('div'); let startX; let startY; let sx = document.documentElement.clientWidth; let sy = document.documentElement.clientHeight; let tempX = localStorage.getItem('tiebaPageX'); let endX = tempX ? tempX : 10; let tempY = localStorage.getItem('tiebaPageY'); let endY = tempX ? tempY : 50; d.style.cssText = `position: fixed;width: 45px;right: ${endX}px;bottom: ${endY}px;z-index:1;`; d.innerHTML = ` `; let svgs = svgss = d.querySelectorAll('svg'); let f = 1; let timer = null; function dd() { [svgs[0], svgs[1], svgs[2]].forEach(el => { el.style.display = f === 1 ? 'block' : 'none' }); f = f === 1 ? 2 : 1; } let flag = 0; function drop(e) { e.preventDefault(); e.stopPropagation(); if (!flag) { return; } let touches = e.touches[0]; let svg = d; endX = sx - touches.clientX - Math.ceil(svg.offsetWidth / 2); endY = sy - touches.clientY - Math.ceil(svg.offsetHeight / 2); if (endX > sx - svg.offsetWidth) { endX = sx - svg.offsetWidth } else if (endX < 0) { endX = 0; } if (endY > sy - svg.offsetHeight) { endY = sy - svg.offsetHeight; } else if (endY < 0) { endY = 0; } svg.style.right = endX + "px"; svg.style.bottom = endY + "px"; } svgs.forEach((value, key) => { if (key !== 3) { value.style.display = 'none'; } else { value.addEventListener('touchstart', ev => { startX = ev.touches[0].clientX - d.offsetLeft; startY = ev.touches[0].clientY - d.offsetLeft; timer = setTimeout(() => { value.style.fill = 'rgba(210,74,195,0.3)'; flag = 1; }, 600); }); value.addEventListener('touchmove', drop, { passive: false }); value.addEventListener('touchend', ev => { clearTimeout(timer); localStorage.setItem('tiebaPageX', endX); localStorage.setItem('tiebaPageY', endY); value.style.fill = 'rgba(77, 74, 210,.3)'; flag = 0; }) } value.style.fill = 'rgba(77, 74, 210,.3)'; value.addEventListener('click', ev => { switch (key) { case 0: location.href = '/mo/q/searchpage'; break; case 1: window.scrollTo({top: 0, left: 0, behavior: "smooth"}); dd(); break; case 2: window.scrollTo({top: document.documentElement.scrollHeight, left: 0, behavior: "smooth"}); dd(); break; case 3: dd(); break; } }); }); document.querySelector('body').appendChild(d); } try { if (!check()) { return; } let x = location.href.match(/\/p\/(\d+)(\?|\#)?/); if (x) { location.href = `/mo/q/m?kz=${x[1]}`; return; } fnav(); clickControl(); let css = document.createElement('style'); css.textContent = ` .class_hide_flag{display:block!important;}.father-cut-pager-class-no-page>#list_pager{visibility: visible!important;height: 44px!important;}#glob,body{margin-top: 0px!important;}.father_cut_list_class{padding-bottom: 0px!important;}.father-cut-recommend-normal-box,.father-cut-daoliu-normal-box,.fixed_bar,.pb,.frs,.no_mean,.addbodybottom,.img_desc,.top-guide-wrap,.open-style,.index-feed-cards .hot-topic,.appPromote_wrapper,.ui_image_header_bottom,.videoFooter,#diversBanner,.tb-footer-wrap,.interest-bar,.footer-wrap,.client-btn,.daoliu{display:none!important;}.tl_shadow:not([data-tid]),#pblist>li:not([data-tid]){display:none!important;}.navbar-view{top:24px!important;}.navbar-box{top:44px!important;} .footer_logo,.footer-version { display:none!important} .fr_list .list_item_floor { padding-top: 8px; letter-spacing: 1px; border-radius: 8px; margin-bottom: 2px border: 1px solid rgba(0,0,0,.1); box-shadow: 5px 5px 5px rgba(0,0,0,0.2);} .floor_footer_item .user_name,.floor_footer_item .user_name:visited { color:#125bc7; } .floor_content a,.floor_content a:visited { color:#498bef; } .fr_list .list_item_floor:nth-child(odd){ background-color:rgba(180, 228, 207, 0.2); } .fr_list .list_item_floor:nth-child(even){ background-color:rgba(168, 191, 157, 0.16); } .nav-bar-wrapper { display:none; } .tb-threadlist__item.tb-banner { display:none; } .tb-threadlist__item.tb-hotthread-wrapper{ display:none; } `; document.querySelector('head').append(css); //debugger delElement(['.ui_image_header_bottom']); if (document.querySelector('#pblist')) { detail(); } if (document.querySelector('#tlist')) { list(); } } catch (e) { console.log(e) } })();