// ==UserScript==
// @name NGA 干净版面
// @namespace none
// @version 2023.09.24
// @description 隐藏广告,自动跳转广告页面,隐藏帖子列表中板块,调整页面
// @match *://bbs.nga.cn/thread.php*
// @match *://bbs.nga.cn/misc*
// @match *://nga.178.com/thread.php*
// @match *://nga.178.com/misc*
// @license MIT
// @grant window.onurlchange
// @run-at document-start
// @downloadURL https://update.greasyfork.icu/scripts/476002/NGA%20%E5%B9%B2%E5%87%80%E7%89%88%E9%9D%A2.user.js
// @updateURL https://update.greasyfork.icu/scripts/476002/NGA%20%E5%B9%B2%E5%87%80%E7%89%88%E9%9D%A2.meta.js
// ==/UserScript==
(function() {
'use strict';
let real
// 自动跳转离开NGA广告页面
let currentURL = window.location.href;
if (/https?:\/\/bbs.nga.cn\/misc/.exec(currentURL)) {
real = /https?:\/\/bbs\.nga\.cn\/(?:r|thr)ead.*$/.exec(currentURL)
if (real){
//alert('准备跳页面')
window.location.href = real[0];
}
} else if (/https?:\/\/nga.178.com\/misc/.exec(currentURL)) {
real = /https?:\/\/nga\.178\.com\/(?:r|thr)ead.*$/.exec(currentURL)
if (real){
//alert('准备跳页面')
window.location.href = real[0];
}
}
class Utils {
getEl(str) {
try {
return document.querySelectorAll(str)
}catch (e) {
console.log('页面没加载完,getEl')
}
}
delEl(el) {
try {
el.parentNode.removeChild(el)
}catch (e) {
console.log('页面没加载完,delEl')
}
}
creEl(elType) {
return document.createElement(elType);
}
}
let Util = new Utils()
// 要删除的元素
let strs = [
'#b_nav', // 底部面包屑导航
'#custombg', // 顶部下方的背景图片
'#footer', // 底部的网页备案信息
'#fast_post_c', // 底部的??
'#m_threads .w100 > span:nth-last-of-type(2)', // 顶部广告
'#m_posts_c>span', // 帖子里,中间广告
'#m_posts_c td.null', // 帖子里,右边广告
]
// 删除页面元素
var delEls = function () {
try {
// 删除帖子列表中的版面镜像
Util.getEl('td span input[type=checkbox]').forEach(
function(e) {
let delTarget = e.parentNode.parentNode.parentNode.parentNode
delTarget.parentNode.removeChild(delTarget)
}
)
} catch(e){
console.log('页面还没加载完')
}
for (let i of strs) {
let els = Util.getEl(i)
for (let j of els) {
Util.delEl(j)
}
}
}
// 改变字体颜色
function changeColor() {
if (Util.getEl('html>style[mystyle]')[0] != undefined){
return
}
let elStyle = Util.creEl('style')
elStyle.type = 'text/css'
elStyle.setAttribute('mystyle', 114514)
let now = new Date();
let hour = now.getHours();
let styleText = ''
if (hour > 6 && hour < 18) { // 6-18点 标题用原色。其他时间,标题改橙色
styleText = 'body{color: rgba(255, 140, 0, 0.7)}'
} else {
styleText = 'body{color: rgba(255, 140, 0, 0.7)}'
//styleText = 'body{color: rgba(255, 140, 0, 0.7)} a.topic{color: rgba(255, 140, 0, 0.8)} '
}
elStyle.innerText = styleText
Util.getEl('html')[0].appendChild(elStyle)
}
// 隐藏版头 添加显示按钮
function hidtoptopics () {
try {
// 如果已存在则不执行
if (document.querySelectorAll('#toptopics')[0] && document.querySelectorAll('#toptopics')[0].style.display != '') {
return
} else if (Util.getEl('#hidtoptopics')[0] == undefined) {
// 添加显示、隐藏按钮
let _right = Util.getEl('#mainmenu div.right')[0]
let _div = Util.creEl("div")
_div.className = 'td'
_div.id = 'hidtoptopics'
_div.innerHTML = '显示'
_right.prepend(_div)
}
// 隐藏版头
let toptopics = Util.getEl('#toptopics')[0]
toptopics.style = 'display: none;'
let h = false
// 切换按钮效果
Util.getEl('#hidtoptopics')[0].addEventListener('click', function () {
h = !h
document.querySelectorAll('#hidtoptopics a.mmdefault')[0].innerHTML = (h ? '隐藏' : '显示')
toptopics.style = `display: ${h ? 'block': 'none'};`
})
} catch(e) {
console.log('隐藏版头 添加显示按钮')
}
}
// 隐藏子版面 添加显示按钮
function hidforum () {
try {
// 如果已存在则不执行
if (Util.getEl('#hidforum')[0] != undefined) {
return
}
// 隐藏子版面
let forum = Util.getEl('#sub_forums_c')[0]
forum.style = 'display: flex;height: 0;'
// 添加显示、隐藏按钮
let _tbody = Util.getEl('#m_pbtntop tbody tr')[0]
let _td = Util.creEl("td")
let h = false
_td.id = 'hidforum'
_td.innerHTML = '显示'
_tbody.prepend(_td)
// 切换按钮效果
_td.addEventListener('click', function () {
h = !h
document.querySelectorAll('#hidforum span')[0].innerHTML = (h ? '隐藏' : '显示')
forum.style = `display: flex;height: ${h ? 'auto': 0};`
})
} catch(e) {
console.log('子版面未出现')
}
}
// 位置变化
var moveEl = function (){
let mm = Util.getEl('#mainmenu')[0]
mm.style.margin = '0 0 -64px 0'
let tds = Util.getEl('#mainmenu .innerbg>div')
tds.forEach(el => {
el.style.display = 'none'
if (!!el.className && el.className.indexOf('right') != -1) {
// 去除上面赋值的none
el.style.display = 'block'
el.style.position = 'relative'
el.style.zIndex = '100'
}
})
}
// 在循环前执行一次,免去等待的时间,感官更好
delEls()
setInterval(function() {
delEls()
if (document.location.pathname.indexOf('/thread') == -1) {
return
}
moveEl()
hidforum()
hidtoptopics()
// changeColor()
}, 1000)
var _body = document.querySelectorAll('body')[0]
try{
_body.style = 'overflow-y:hidden;'
} catch (e) {
console.log('页面还没加载好')
}
})();