// ==UserScript== // @name MDSteamCN // @namespace http://tampermonkey.net/ // @version 0.111 // @description md化SteamCN // @author marioplus // @match https://steamcn.com/* // @require https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js // @run-at document-end // @downloadURL none // ==/UserScript== (function() { // 加载css/js资源 function loadResource() { $('head') .append('') // mdui .append('') .append('') .append(initCss()) } // 初始需要的css function initCss() { return ` ` } // 解析数据 function parseData() { // 初始主题 function initColor() { const colors = [ ['red', 'white'], ['pink', 'white'], ['purple', 'white'], ['deep-purple', 'white'], ['indigo', 'white'], ['teal', 'white'], ['blue', 'black'], ['light-blue', 'black'], ['cyan', 'black'], ['green', 'black'], ['light-green', 'black'], ['lime', 'black'], ['yellow', 'black'], ['amber', 'black'], ['orange', 'black'], ['deep-orange', 'black'], ] const index = Math.floor(Math.random() * colors.length) return { theme: colors[index][0], nav: colors[index][1] } } // 导航条 function parseNav() { let tmpNavs = [] $('.subforum_left_title_left_up>div>a').each((i, e) => { let tmpNav = {} tmpNav.href = e.getAttribute('href') tmpNav.text = e.innerText tmpNavs.push(tmpNav) }) return tmpNavs } // 头像 function parseAvatar() { return $('img.avatar.img-circle').attr('src') } // 消息 function parseMessage() { // TODO:需要测试有消息的情况 } // 提醒 function parseRemind() { // TODO:需要测试有提醒的情况 } // 帖子标题 function parsePostTitle() { return $('a#thread_subject').attr('title') } // 帖子属性 function parsePostAttr() { const $postData = $('div.subforum_right_title > div div:odd') const $postFavorite = $('#k_favorite') const $postReply = $('#post_reply') return { reply: { text: '回复', amount: $postData[0].innerText, onclick: $postReply.attr('onclick') }, view: { text: '查看', amount: $postData[1].innerText }, favorite: { text: '收藏', amount: $postData[2].innerText, onclick: `showWindow('k_favorite', '${$postFavorite.attr('href')}', 'get', 0);` } } } return { // 颜色 color: initColor(), // 工具条 appbar: { // 导航栏 nav: parseNav(), // 头像 avatar: parseAvatar(), // 消息 message: parseMessage(), // 提醒 remind: parseRemind() }, // 帖子 post: { // 标题 title: parsePostTitle(), // 访问数据 attr: parsePostAttr() } } } // 初始主题 function initTheme(data) { $('body').addClass(`mdui-theme-primary-${data.color.theme} mdui-theme-accent-${data.color.nav} mdui-text-`) // .addClass(`mdui-drawer-body-left mdui-appbar-with-toolbar mdui-theme-primary-teal mdui-theme-accent-${data.color.nav} mdui-loaded`) .append(`
`) } // appbar function generateAppbar(data) { // 面包屑导航 function generateNav() { let tmp = '' data.appbar.nav.forEach((e, i) => { tmp += `${e.text}` // html += `${e.text}` if (i < data.appbar.nav.length - 1) { tmp += `>` } }) return tmp } // 消息和提醒 function generateMsgAndRemind() { let messageCountStr = $('a.btn.btn-user-action:first > span').text() let remindCountStr = $('a.btn.btn-user-action:last > span').text() function gen(countStr, icon, href) { return `${icon} ${countStr}` } return gen(messageCountStr, 'email', 'home.php?mod=space&do=pm') + gen(remindCountStr, 'notifications', 'home.php?mod=space&do=notice&view=system') } // 个人中心 function parseProfileHref() { return $('.avatar').parent()[0].href } // 生成 $('body').prepend(`
menu SteamCN
${generateNav()}
search ${generateMsgAndRemind()}
near_me
平台
keyboard_arrow_down
enhanced_encryption
互助
keyboard_arrow_down
child_friendly
友商
keyboard_arrow_down
exposure_plus_1
休闲
keyboard_arrow_down
local_mall
服务
keyboard_arrow_down
hot_tub
其乐
keyboard_arrow_down
view_carousel
赠楼
keyboard_arrow_down
local_atm
交易
keyboard_arrow_down
fingerprint
信誉
keyboard_arrow_down
`) $('#nav-menu').remove() $('.tb-container').remove() } // 帖子标题 浏览数据 function generatePostTitleAndAttr(data) { $('#pgt, div.subforum').remove() $('body').prepend(`

${data.post.title}

`) } // 帖子内容 md化 function mdPost() { mdContent() generateBtnGroup() // 帖子 function mdContent() { // 鼠标悬浮加深阴影 阴影 $('#postlist').addClass('mdui-hoverable mdui-shadow-5') // 回复间隙 改为主题色 $('.ad').addClass('mdui-color-theme') // 帖子-回复按钮 $('.pob.cl a').addClass('mdui-btn mdui-ripple mdui-btn-dense') } // 回复页数 按钮组 function generateBtnGroup() { //
//
// chevron_left // 1 // 2 // 3 // 4 // 5 // 6 // 7 // 8 // 9 // 10 // ...32 // chevron_right //
//
// 查找特殊节点 function findPage(cName) { const tmpNode = $(`.pg .${cName}`) if (tmpNode === undefined) { return undefined } return { text: tmpNode.text(), href: tmpNode.attr('href') } } function addTextBtn(data, isActive) { return `${data.text}` } function addIconBtn(data, icon) { return `${icon}` } let pervPage = findPage('prev') let firstPage = findPage('first') let lastPage = findPage('last') let nextPage = findPage('nxt') let pageGroupHtml = `
` if (pervPage.href) { pageGroupHtml += addIconBtn(pervPage, 'chevron_left') } if (firstPage.href) { pageGroupHtml += addTextBtn(firstPage, false) } $('.pg > a:not(.first,.prev,.nxt,.last),.pg > strong').each((i, e) => { const date = { href: e.href === undefined ? 'javascript:;' : e.href, text: e.innerText } pageGroupHtml += addTextBtn(date, e.href === undefined) }) if (lastPage.href) { pageGroupHtml += addTextBtn(lastPage, false) } if (nextPage.href) { pageGroupHtml += addIconBtn(nextPage, 'chevron_right') } pageGroupHtml += `
` $('#postlist').append(pageGroupHtml) // 隐藏默认 $('.pgbtn,.pgs.mtm.mbm.cl').remove() } // 回复按钮 $('#f_pst').appendTo('#postlist') .prepend('
') $('#fastpostsubmit').replaceWith('') // $('p.ptm.pnpost').addClass('mdui-valign') $('p.ptm.pnpost a.y').appendTo('p.ptm.pnpost') // 回帖跳转最后一页 $('label[for=fastpostrefresh]').addClass('mdui-checkbox') .append('') } function mdOther() { generateScrollTopBtn() // 返回顶部按钮 function generateScrollTopBtn() { $('body').append('') let scrollTopHide = true $(window).scroll(() => { if ($(window).scrollTop() > 100) { // 显示 if (scrollTopHide) { scrollTopHide = !scrollTopHide $('#my_ScrollTopBtn').removeClass('mdui-fab-hide') } } else { // 隐藏 if (!scrollTopHide) { scrollTopHide = !scrollTopHide $('#my_ScrollTopBtn').addClass('mdui-fab-hide') } } }) $(window).trigger('scroll') $('#my_ScrollTopBtn').on('click', () => { $('html,body').finish().animate({'scrollTop': '0px'}, 500) }) } } // 判断4类不同的页面 const locationHref = window.location if (/^https:\/\/steamcn.com\/(forum.php(\?gid=\d+)?)?$/.test(locationHref)) { /* * 首页 * https://steamcn.com/ * https://steamcn.com/forum.php/ */ console.log('home') } else if (/^https:\/\/steamcn.com\/(f\d+)|(forum.php\?mod=forumdisplay)/.test(locationHref)) { /* * 目录 * https://steamcn.com/f274-1 * https://steamcn.com/forum.php?mod=forumdisplay&fid=274&filter=typeid&typeid=348 */ console.log('forum display') } else if (/^https:\/\/steamcn.com\/(t\d+)|(forum.php\?mod=viewthread)/.test(locationHref)) { /* * 帖子 * https://steamcn.com/t368540-1-1 * https://steamcn.com/forum.php?mod=viewthread&tid=368540&page=1#pid6102860 */ console.log('post') loadResource() const data = parseData() initTheme(data) generateAppbar(data) generatePostTitleAndAttr(data) mdPost() mdOther() } else if (/^https:\/\/steamcn.com\/home.php/.test(locationHref)) { /* * 个人页面 * https://steamcn.com/t368540-1-1 * https://steamcn.com/forum.php?mod=viewthread&tid=368540&page=1#pid6102860 */ console.log('profile') } else { console.log('unknown') } })();