diff --git a/tieba page.user.js b/tieba page.user.js new file mode 100644 index 0000000..cebd656 --- /dev/null +++ b/tieba page.user.js @@ -0,0 +1,1252 @@ +// ==UserScript== +// @name tieba page +// @namespace http://tampermonkey.net/ +// @version 1.019 +// @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'); + 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(); + + + $("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('.post_title_text'); + if (title) { + // title.href=title.href.replace('f?kw=','mo/q/m?word=') + } + 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', + ]); + + + document.querySelector('.father-cut-pager-class-no-page').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 + }); + + + } + + 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) + } +})();