您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
换肤/查房/白名单/屏蔽词/楼层记忆/标记楼主
当前为
// ==UserScript== // @name 兔区&闲情助手 // @author 岚浅浅 // @description 换肤/查房/白名单/屏蔽词/楼层记忆/标记楼主 // @namespace http://tampermonkey.net/ // @version 1.9.2 // @include *://bbs.jjwxc.net/* // @license GPL-3.0 License // @require https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js // @require https://cdn.bootcdn.net/ajax/libs/underscore.js/1.13.1/underscore.min.js // ==/UserScript== $(function () { const SEPARATOR = ' '; const SKIN_CSS_MAP = new Map([['0', ''], ['1', ` /* 背景颜色 */ body, td, input, textarea { background-color: #2F393C !important; } /* 字体颜色 */ * { color: #616161; } #msgsubject, #topic, .replybodyinner, .landlord, a, span, input, textarea { color: #A8C023 !important; } /* 边框颜色 */ input, table[border="4"] { border: solid 1px; } /* 修改头像 */ .image1, .image2, .image6, .image7, .image8, .image9, .image10, .image12, .image13, .image14, .image15, .image16 { background-image: url(https://i.loli.net/2018/08/28/5b84af69b2b16.png) !important; } .image17, .image18, .image19, .image20, .image21, .image22, .image23, .image24 { background-image: url(https://i.loli.net/2018/08/28/5b84af682e7eb.png) !important; } `]]); const MOBILE_SKIN_CSS = ` .read div { width: 360px; overflow-x: auto !important; } `; const TOOLBAR_CSS = ` .clickable { z-index: 999999; position: fixed; right: 10px; width: 180px; display: flex; flex-direction:column; opacity: 0.6; border: 1px solid #a38a54; border-radius: 3px; } .clickable div { margin: 2px auto; } .clickable a { margin: auto; cursor: pointer; } #toolbar-0 { top: 10px; width: 20px; } #toolbar-1 { top: 10px; } #toolbar-1 input { padding-left: 3px; width: 120px; height: 20px; font-size: 10px; } #white-keywords-wrapper, #spam-keywords-wrapper { display: none; } #white-keywords-wicket, #spam-keywords-wicket { top: 180px; overflow-y: auto; max-height: 730px; } #white-keywords-wicket::-webkit-scrollbar, #spam-keywords-wicket::-webkit-scrollbar { display: none; } .add-spam-post-btn, .board-report-btn { font-size: small; } .keyword-operation { font-size: small; } `; const MOBILE_TOOLBAR_CSS = ` #toolbar-1, #toolbar-1 input, #white-keywords-wicket, #spam-keywords-wicket { background-color: white !important; } `; const TOOLBAR_HTML_MAP = new Map([['BOARD', [{ id: '0', html: ` <div id="toolbar-0" class="clickable"> <div> <a id="toolbar-switcher">助</a> </div> </div> ` }, { id: '1', html: ` <div id="toolbar-1" class="clickable"> <div> <a id="skin-switcher">换肤</a> <a id="toolbar-switcher">隐藏助手</a> </div> <div> <a id="go-top-btn">到顶部</a> <a id="go-bottom-btn">到底部</a> </div> <div> <input id="jump-post-inputbox" placeholder="输入贴子ID,直接跳转"> <a id="jump-post-btn">跳转</a> </div> <div> <input id="add-white-keywords-inputbox" placeholder="添加白名单,空格隔开"> <a id="add-white-keyword-btn">确定</a> </div> <div> <input id="add-spam-keywords-inputbox" placeholder="添加屏蔽词,空格隔开"> <a id="add-spam-keyword-btn">确定</a> </div> <div> <a id="white-keywords-wicket-toggler">查看白名单</a> <a id="spam-keywords-wicket-toggler">查看屏蔽词</a> </div> </div> <div id="white-keywords-wrapper"> <div id="white-keywords-wicket" class="clickable"></div> </div> <div id="spam-keywords-wrapper"> <div id="spam-keywords-wicket" class="clickable"></div> </div> ` }]], ['POST', [{ id: '0', html: ` <div id="toolbar-0" class="clickable"> <div> <a id="toolbar-switcher">助</a> </div> </div> ` }, { id: '1', html: ` <div id="toolbar-1" class="clickable"> <div> <a id="skin-switcher">换肤</a> <a id="toolbar-switcher">隐藏助手</a> </div> <div> <a id="go-top-btn">到顶部</a> <a id="go-bottom-btn">到底部</a> <a id="count-btn">查房</a> </div> <div> <input id="add-white-keywords-inputbox" placeholder="添加白名单,空格隔开"> <a id="add-white-keyword-btn">确定</a> </div> <div> <input id="add-spam-keywords-inputbox" placeholder="添加屏蔽词,空格隔开"> <a id="add-spam-keyword-btn">确定</a> </div> <div> <a id="white-keywords-wicket-toggler">查看白名单</a> <a id="spam-keywords-wicket-toggler">查看屏蔽词</a> </div> <div> <a id="white-keywords-highlight-toggler">贴内高亮</a> <a id="go-pre-white-keyword-btn">前一个</a> <a id="go-next-white-keyword-btn">后一个</a> </div> </div> <div id="white-keywords-wrapper"> <div id="white-keywords-wicket" class="clickable"></div> </div> <div id="spam-keywords-wrapper"> <div id="spam-keywords-wicket" class="clickable"></div> </div> ` }]]]); const IS_MOBILE = /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent); const DEFAULT_SKIN_ID = '1'; const DEFAULT_TOOLBAR_ID = IS_MOBILE ? '0' : '1'; const IS_BOARD_PAGE = location.href.indexOf('board.php') > 0; const IS_POST_PAGE = location.href.indexOf('showmsg.php') > 0; const PAGE_TYPE = IS_BOARD_PAGE ? 'BOARD' : (IS_POST_PAGE ? 'POST' : ''); const BOARD_ID = IS_BOARD_PAGE || IS_POST_PAGE ? getParamValue('board') : ''; const POST_ID = IS_POST_PAGE ? getParamValue('id') : ''; const PAGE_ID = getParamValue('page') || (IS_BOARD_PAGE ? '1' : '0'); const MATCHES = IS_POST_PAGE ? $('#msgsubject').text().match(/主题:(.*)\[(\d+)\]/) : ''; const PREFIX = IS_POST_PAGE ? BOARD_ID + '_' + POST_ID + '_' + MATCHES[1].trim() : ''; let Skin = { init() { Skin.initSkin(); Skin.initAdBlock(); }, initSkin() { addStyle(SKIN_CSS_MAP.get(getConfig('SkinId', DEFAULT_SKIN_ID))); addStyle(IS_MOBILE ? MOBILE_SKIN_CSS : ''); }, initAdBlock() { if (IS_BOARD_PAGE) { $('.width_300').hide(); $('.width_468').hide(); } else if (IS_POST_PAGE) { $('#imgurl').hide(); $('#bbs_top_360').hide(); } }, switchSkin() { let oldSkinId = parseInt(getConfig('SkinId', DEFAULT_SKIN_ID)); let newSkinId = (oldSkinId + 1) % SKIN_CSS_MAP.size; setConfig('SkinId', newSkinId); location.reload(); } }; let Toolbar = { init() { Toolbar.initToolbar(); Toolbar.registerEvent(); }, initToolbar() { addStyle(TOOLBAR_CSS); addStyle(IS_MOBILE ? MOBILE_TOOLBAR_CSS : ''); TOOLBAR_HTML_MAP.get(PAGE_TYPE).forEach(function (item) { $('body').append(item['html']); $('#toolbar-' + item['id']).hide(); }); if (IS_MOBILE) { deleteConfig('ToolbarId'); } let toolbarId = getConfig('ToolbarId', DEFAULT_TOOLBAR_ID); $('#toolbar-' + toolbarId).show(); }, switchToolbar() { let oldToolbarId = parseInt(getConfig('ToolbarId', DEFAULT_TOOLBAR_ID)); let newToolbarId = (oldToolbarId + 1) % TOOLBAR_HTML_MAP.get(PAGE_TYPE).length; setConfig('ToolbarId', newToolbarId); $('#toolbar-' + oldToolbarId).hide(); $('#toolbar-' + newToolbarId).show(); }, registerEvent() { $(document).on('click', '#skin-switcher', function () { Skin.switchSkin(); }); $(document).on('click', '#toolbar-switcher', function () { Toolbar.switchToolbar(); }); $(document).on('click', '#go-top-btn', function () { scrollTo(0); }); $(document).on('click', '#go-bottom-btn', function () { scrollTo($(document).height()); }); } }; let KeyWord = { whiteKeywordsWicketStatus: false, spamKeywordsWicketStatus: false, init() { if (!IS_BOARD_PAGE && !IS_POST_PAGE) { return; } KeyWord.initBoardKeywords(); KeyWord.initPostKeywords(); KeyWord.registerEvent(); }, initBoardKeywords() { if (!IS_BOARD_PAGE) { return; } let whiteKeywords = getConfigItems('WhiteKeywords'); let spamKeywords = getConfigItems('SpamKeywords'); let spamPosts = getConfigItems('SpamPosts'); let nodes = $('#msglist').children().children().toArray(); nodes.shift(); for (let node of nodes) { let titleNode = $(node).find('td')[3]; let url = $(titleNode).children().attr('href'); let id = getParamValue('id', url); let title = titleNode.innerText; let needHighlight = false; for (let whiteKeyword of whiteKeywords) { if (title.indexOf(whiteKeyword) >= 0) { $(node).css('opacity', '0.75'); needHighlight = true; console.log(`已高亮(${whiteKeyword}):${title}`); break; } } if (!needHighlight) { for (let spamKeyword of spamKeywords) { if (title.indexOf(spamKeyword) >= 0) { $(node).remove(); console.log(`已过滤(${spamKeyword}):${title}`); break; } } } for (let spamPost of spamPosts) { if (spamPost === id) { $(node).remove(); console.log(`已过滤:${title}`); break; } } } }, initPostKeywords() { if (!IS_POST_PAGE) { return; } let whiteKeywords = getConfigItems('WhiteKeywords'); let whiteKeywordsCloseInPost = getConfigItems('WhiteKeywordsCloseInPost'); let spamKeywordsOpenInPost = getConfigItems('SpamKeywordsOpenInPost'); let nodes = $('#topic, .quotebodyinner, .replybodyinner').toArray(); for (let node of nodes) { for (let whiteKeyword of whiteKeywords) { if (whiteKeywordsCloseInPost.indexOf(whiteKeyword) < 0) { $(node).html($(node).html().replace(new RegExp(whiteKeyword, 'g'), `<span class="highlight-keyword">${whiteKeyword}</span>`)); } } for (let spamKeywordOpenInPost of spamKeywordsOpenInPost) { if (node.innerText.indexOf(spamKeywordOpenInPost) >= 0) { $(node).parent().remove(); break; } } } if (getPostConfig('WhiteKeywordsHighlight')) { this.showWhiteKeywordsHighlight(); } }, addKeyword(inputbox, configName) { let keyword = inputbox.val().trim().replace(/\s+/g, SEPARATOR); if (keyword === '') { alert('请输入要添加的关键词!'); return; } addConfigItem(configName, keyword); inputbox.val(''); }, addWhiteKeyword() { KeyWord.addKeyword($('#add-white-keywords-inputbox'), 'WhiteKeywords'); KeyWord.showWhiteKeywordsWicket(); }, addSpamKeyword() { KeyWord.addKeyword($('#add-spam-keywords-inputbox'), 'SpamKeywords'); KeyWord.showSpamKeywordsWicket(); }, deleteWhiteKeyword(node) { let keyword = $(node).prev().prev().text(); $(node).parent().remove(); removeConfigItem('WhiteKeywords', keyword); removeConfigItem('WhiteKeywordsCloseInPost', keyword); KeyWord.showWhiteKeywordsWicket(); }, deleteSpamKeyword(node) { let keyword = $(node).prev().prev().text(); $(node).parent().remove(); removeConfigItem('SpamKeywords', keyword); removeConfigItem('SpamKeywordsOpenInPost', keyword); KeyWord.showSpamKeywordsWicket(); }, toggleKeywordInpost(node, configName) { let keyword = $(node).prev().text(); if (getConfigItems(configName).indexOf(keyword) < 0) { addConfigItem(configName, keyword); } else { removeConfigItem(configName, keyword); } }, toggleWhiteKeywordInpost(node) { KeyWord.toggleKeywordInpost(node, 'WhiteKeywordsCloseInPost'); KeyWord.showWhiteKeywordsWicket(); }, toggleSpamKeywordInpost(node) { KeyWord.toggleKeywordInpost(node, 'SpamKeywordsOpenInPost') KeyWord.showSpamKeywordsWicket(); }, showWhiteKeywordsHighlight() { $('.highlight-keyword').css('cssText', 'color: #BC3F3C !important'); $('#white-keywords-highlight-toggler').text('取消高亮'); setPostConfig('WhiteKeywordsHighlight', true); }, hideWhiteKeywordsHighlight() { $('.highlight-keyword').css('cssText', 'color: ;'); $('#white-keywords-highlight-toggler').text('贴内高亮'); deletePostConfig('WhiteKeywordsHighlight'); }, toggleWhiteKeywordsHighlight() { if (!getPostConfig('WhiteKeywordsHighlight')) { KeyWord.showWhiteKeywordsHighlight(); } else { KeyWord.hideWhiteKeywordsHighlight(); } }, goPreWhiteKeyword() { if (!getPostConfig('WhiteKeywordsHighlight')) { KeyWord.showWhiteKeywordsHighlight(); } let scrollTop = $(document).scrollTop(); let nodes = $('.highlight-keyword').toArray(); for (let i = nodes.length - 1; i >= 0; i--) { let node = nodes[i]; let nodeTop = $(node).parents('tr').parents('tr').prev().offset().top; if (nodeTop < scrollTop) { scrollTo(nodeTop); return; } } }, goNextWhiteKeyword() { if (!getPostConfig('WhiteKeywordsHighlight')) { KeyWord.showWhiteKeywordsHighlight(); } let scrollTop = $(document).scrollTop(); let nodes = $('.highlight-keyword').toArray(); for (let node of nodes) { let nodeTop = $(node).parents('tr').parents('tr').prev().offset().top; if (nodeTop - scrollTop > window.innerHeight) { $('html, body').animate({scrollTop: nodeTop}, 1000); return; } } }, renderWhiteKeywordsWicket() { refreshConfigItems('WhiteKeywords'); refreshConfigItems('WhiteKeywordsCloseInPost'); let whiteKeywords = getConfigItems('WhiteKeywords'); let whiteKeywordsCloseInPost = getConfigItems('WhiteKeywordsCloseInPost'); let html = whiteKeywords.map(whiteKeyword => { return ` <div> <label>${whiteKeyword}</label> <a class='keyword-operation white-keyword-inpost-toggler' title='设置该白名单是否在贴内高亮,默认高亮'>贴内${whiteKeywordsCloseInPost.indexOf(whiteKeyword) >= 0 ? '-' : '+'}</a> <a class='keyword-operation delete-white-keyword-btn'>删除</a> </div> `; }).join(''); $('#white-keywords-wicket').html(html); }, showWhiteKeywordsWicket() { KeyWord.renderWhiteKeywordsWicket(); $('#white-keywords-wrapper').show(); $('#spam-keywords-wrapper').hide(); $('#white-keywords-wicket-toggler').text('隐藏白名单'); $('#spam-keywords-wicket-toggler').text('查看屏蔽词'); KeyWord.whiteKeywordsWicketStatus = true; KeyWord.spamKeywordsWicketStatus = false; }, hideWhiteKeywordsWicket() { $('#white-keywords-wrapper').hide(); $('#white-keywords-wicket-toggler').text('查看白名单'); KeyWord.whiteKeywordsWicketStatus = false; }, toggleWhiteKeywordsWicket() { if (!KeyWord.whiteKeywordsWicketStatus) { KeyWord.showWhiteKeywordsWicket(); } else { KeyWord.hideWhiteKeywordsWicket(); } }, renderSpamKeywordsWicket() { refreshConfigItems('SpamKeywords'); refreshConfigItems('SpamKeywordsOpenInPost'); let spamKeywords = getConfigItems('SpamKeywords'); let spamKeywordsOpenInPost = getConfigItems('SpamKeywordsOpenInPost'); let html = spamKeywords.map(spamKeyword => { return ` <div> <label>${spamKeyword}</label> <a class='keyword-operation spam-keyword-inpost-toggler' title='设置该屏蔽词是否在贴内生效,默认不屏蔽'>贴内${spamKeywordsOpenInPost.indexOf(spamKeyword) >= 0 ? '-' : '+'}</a> <a class='keyword-operation delete-spam-keyword-btn'>删除</a> </div> `; }).join(''); $('#spam-keywords-wicket').html(html); }, showSpamKeywordsWicket() { KeyWord.renderSpamKeywordsWicket(); $('#white-keywords-wrapper').hide(); $('#spam-keywords-wrapper').show(); $('#white-keywords-wicket-toggler').text('查看白名单'); $('#spam-keywords-wicket-toggler').text('隐藏屏蔽词'); KeyWord.whiteKeywordsWicketStatus = false; KeyWord.spamKeywordsWicketStatus = true; }, hideSpamKeywordsWicket() { $('#spam-keywords-wrapper').hide(); $('#spam-keywords-wicket-toggler').text('查看屏蔽词'); KeyWord.spamKeywordsWicketStatus = false; }, toggleSpamKeywordsWicket() { if (!KeyWord.spamKeywordsWicketStatus) { KeyWord.showSpamKeywordsWicket(); } else { KeyWord.hideSpamKeywordsWicket(); } }, addSpamPost(node) { let id = $(node).attr('id'); addConfigItem('SpamPosts', id); $('#boardtr_' + id).remove(); }, registerEvent() { $(document).on('keypress', '#add-white-keywords-inputbox', function (event) { if (event.keyCode === 13) { KeyWord.addWhiteKeyword(); } }); $(document).on('click', '#add-white-keyword-btn', function () { KeyWord.addWhiteKeyword(); }); $(document).on('keypress', '#add-spam-keywords-inputbox', function (event) { if (event.keyCode === 13) { KeyWord.addSpamKeyword(); } }); $(document).on('click', '#add-spam-keyword-btn', function () { KeyWord.addSpamKeyword(); }); $(document).on('click', '.delete-white-keyword-btn', function () { KeyWord.deleteWhiteKeyword(this); }); $(document).on('click', '.delete-spam-keyword-btn', function () { KeyWord.deleteSpamKeyword(this); }); $(document).on('click', '.white-keyword-inpost-toggler', function () { KeyWord.toggleWhiteKeywordInpost(this); }); $(document).on('click', '.spam-keyword-inpost-toggler', function () { KeyWord.toggleSpamKeywordInpost(this); }); $(document).on('click', '#white-keywords-highlight-toggler', function () { KeyWord.toggleWhiteKeywordsHighlight(); }); $(document).on('click', '#go-pre-white-keyword-btn', function () { KeyWord.goPreWhiteKeyword(); }); $(document).on('click', '#go-next-white-keyword-btn', function () { KeyWord.goNextWhiteKeyword(); }); $(document).on('click', '#white-keywords-wicket-toggler', function () { KeyWord.toggleWhiteKeywordsWicket(); }); $(document).on('click', '#spam-keywords-wicket-toggler', function () { KeyWord.toggleSpamKeywordsWicket(); }); $(document).on('click', '.add-spam-post-btn', function () { KeyWord.addSpamPost(this); }); } }; let Floor = { init() { if (!IS_POST_PAGE) { return; } Floor.initFloor(); Floor.initLandlordMarker(); Floor.initMyUsername(); Floor.registerEvent(); }, initFloor() { let floor = parseInt(getPostConfig('Floor', '0')); if (floor) { let pageId = Math.floor((floor - 1) / 300); if (pageId === parseInt(PAGE_ID)) { let node = $('.authorname').toArray().filter(e => parseInt($(e).find('font')[0].innerText.substring(1)) === floor); scrollTo($(node).parent().prev().prev().offset().top); deletePostConfig('Floor'); } else { window.open(`https://bbs.jjwxc.net/showmsg.php?board=${BOARD_ID}&id=${POST_ID}&page=${pageId}`); } } }, initLandlordMarker() { let landlord = $('.authorname').eq(0).find('font').eq(2).text(); if (landlord === '于') { return; } $('font').each(function () { if ($(this).text() === landlord) { $(this).parent().find('font').eq(1).after('<span class="landlord">[楼主]</span>'); } }); }, initMyUsername() { $('input[name="username"]').val(getConfig('Username') || '= ='); }, registerEvent() { window.onbeforeunload = function () { if (!getPostConfig('Floor')) { let currentFloor = getCurrentFloor(); if (currentFloor > 10 && (currentFloor - 1) % 300 < 290) { setPostConfig('Floor', currentFloor); } } let reply = $('textarea[name="body"]').val(); if (reply) { setPostConfig('Reply', reply); } }; $(document).on('click', 'a[class^="quotereply"]', function () { setPostConfig('Floor', $(this).parent().prev().find('font')[0].innerText.substring(1)); }); $('input[name="username"]').bind('input propertychange', function () { setConfig('Username', $('input[name="username"]').val()); }); } }; let Other = { init() { Other.registerEvent(); }, count() { let peopleBriefs = []; let currentPageId = 0; let maxPageId = parseInt(PAGE_ID); let callbackFn = function (data, textStatus) { if (textStatus === "success") { let peopleStrs = data.match(/<font color=#999999>.*?<\/font>/g); if (peopleStrs) { _.each(peopleStrs, function (s) { let peopleId = s.replace('<font color=#999999>', '').replace('</font>', ''); let peopleBrief = _.find(peopleBriefs, function (b) { return b['peopleId'] === peopleId; }); if (peopleBrief) { peopleBrief['replies'].push(''); } else { peopleBriefs.push({peopleId: peopleId, replies: ['']}); } }); console.log(`第${++currentPageId}次统计,人数为${peopleBriefs.length}`); } if (currentPageId === maxPageId) { let size1 = _.filter(peopleBriefs, function (b) { return b['replies'].length == 1; }).length; let size2 = _.filter(peopleBriefs, function (b) { return b['replies'].length <= 3; }).length; let size3 = _.filter(peopleBriefs, function (b) { return b['replies'].length >= 10; }).length; alert(`截至第${maxPageId + 1}页,该贴共${peopleBriefs.length}人发言。\n其中,${size1}人仅发言1次,${size2}人发言次数<=3,${size3}人发言次数>=10。`); } } }; for (let i = 0; i <= maxPageId; i++) { $.ajax({ type: 'GET', url: `https://bbs.jjwxc.net/showmsg.php?board=${BOARD_ID}&id=${POST_ID}&page=${i}`, xhrFields: { withCredentials: true }, success: callbackFn }); } }, registerEvent() { let reachTopCount = 0; let reachBottomCount = 0; let startY = 0; document.addEventListener("touchstart", function (e) { startY = e.changedTouches[0].pageY; }, false); document.addEventListener("touchmove", function (e) { let endY = e.changedTouches[0].pageY; let changeVal = endY - startY; let totalHeight = $(document).height(); let windowHeight = $(window).height(); let scrollTop = $(window).scrollTop(); console.log(totalHeight + ' ' + windowHeight + ' ' + scrollTop); console.log(windowHeight / (totalHeight - scrollTop)); if (changeVal > 0 && scrollTop == 0) { reachTopCount++; } else { reachTopCount = 0; } if (changeVal < 0 && windowHeight / (totalHeight - scrollTop) >= 0.999) { reachBottomCount++; } else { reachBottomCount = 0; } alert('count: ' + reachTopCount + ' ' + reachBottomCount) if (reachTopCount == 10) { window.location.href = `https://bbs.jjwxc.net/board.php?board=${BOARD_ID}`; } else if (reachBottomCount == 10) { window.location.href = `https://bbs.jjwxc.net/board.php?board=${BOARD_ID}&page=${parseInt(PAGE_ID) + 1}`; } }, false); $(document).on('click', '#count-btn', function () { Other.count(); }); } }; Skin.init(); Toolbar.init(); KeyWord.init(); Floor.init(); Other.init(); function getParamValue(key, url) { let query = url ? url.split('?')[1] : location.search.substring(1); let params = query.split('&'); for (let param of params) { let pair = param.split('='); if (pair[0] === key) { return pair[1]; } } return (''); } function addStyle(css) { if (!css) { return; } let head = $('head').get(0); let style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } function getConfig(name, defaultValue) { return localStorage.getItem(name) || defaultValue || ''; } function setConfig(name, value) { localStorage.setItem(name, value); } function deleteConfig(name) { localStorage.removeItem(name); } function getPostConfig(name, defaultValue) { return getConfig(PREFIX + '_' + name, defaultValue); } function setPostConfig(name, value) { setConfig(PREFIX + '_' + name, value); } function deletePostConfig(name) { deleteConfig(PREFIX + '_' + name); } function getConfigItems(name) { let config = getConfig(name).trim(); return config ? config.split(SEPARATOR) : []; } function addConfigItem(name, item) { setConfig(name, getConfig(name) + SEPARATOR + item); } function removeConfigItem(name, item) { setConfig(name, (SEPARATOR + getConfig(name) + SEPARATOR).replace(SEPARATOR + item + SEPARATOR, SEPARATOR)); } function refreshConfigItems(name) { let items = Array.from(new Set(getConfigItems(name))); setConfig(name, items.join(SEPARATOR)); } function getCurrentFloor() { let scrollTop = $(document).scrollTop(); let nodes = $('.authorname').toArray(); for (let node of nodes) { let nodeTop = $(node).parent().prev().prev().offset().top; if (nodeTop > scrollTop) { return parseInt($(node).find('font')[0].innerText.substring(1)); } } return parseInt($(nodes.pop()).find('font')[0].innerText.substring(1)); } function scrollTo(height) { $('html, body').animate({scrollTop: height}, 1000); } });
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址