XD-Enhance

优化 PC 端的使用体验!样式美化 / 饼干备注 / 快捷切换饼干

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         XD-Enhance
// @namespace    http://tampermonkey.net/
// @version      1.0.3
// @description  优化 PC 端的使用体验!样式美化 / 饼干备注 / 快捷切换饼干
// @author       syrinka
// @match        https://www.nmbxd1.com/*
// @grant        GM_addStyle
// @grant        GM_getValue
// @grant        GM_setValue
// @license      MIT
// ==/UserScript==
 
var custom_style = '.h-threads-item-reply, .h-threads-item-ref { margin: 12px; width: 100%; border-radius: 16px; } .h-threads-item-reply > .h-threads-item-reply-icon, .h-threads-item-ref > .h-threads-item-reply-icon { display: none !important; } .h-threads-item-reply > .h-threads-item-reply-main, .h-threads-item-ref > .h-threads-item-reply-main { padding: 12px; border-radius: 16px; } .h-threads-item-reply > .h-threads-item-reply-main > .h-threads-info, .h-threads-item-ref > .h-threads-item-reply-main > .h-threads-info { width: 100%; } .h-threads-item-reply > .h-threads-item-reply-main > .h-threads-info > .h-threads-info-id, .h-threads-item-ref > .h-threads-item-reply-main > .h-threads-info > .h-threads-info-id { float: right; } .h-threads-img-box img { margin: 15px !important; } #h-content .uk-container { margin: 0 auto; transform: translate(-75px, 0); } #h-content .uk-pagination { margin: 0px auto; } #h-menu { transition: left 0.4s; height: 100% !important; width: 150px; left: -150px; } #h-menu:hover { left: 0px; } #h-bottom-nav { display: none; } #h-post-form > form > div:nth-child(2) { display: none; } #h-post-form > .h-forum-header { display: none; } .ae-box { display: none; position: fixed; right: 24px; bottom: 24px; font-size: 21px; background: #f0e0d6; padding: 15px; border-radius: 8px; font-family: Consolas; } .ae-cookie { display: block; margin: 5px; } #ae-toast { font-size: 16px; }'
 
 
function toast(msg) {
    $('#ae-toast').html(msg).fadeIn(500)
    setTimeout(function() {
        $('#ae-toast').fadeOut(500)
    }, 2000)
}
 
 
function init_check() {
    if (!GM_getValue('now-cookie', false) || !GM_getValue('cookies', false)) {
        toast('当前饼干信息不明! 请前往饼干列表页面并手动切换一次饼干')
        return false
    }
    return true
}
 
 
function get_desc(id) {
    var c = GM_getValue('cookies', null)
    if (!c || !c[id] || !c[id].desc) {
        return null
    } else {
        return c[id].desc
    }
}
 
 
function iset_desc(id) { // with prompt
    var c = GM_getValue('cookies')
    var ndesc = prompt('新备注:', c[id].desc)
    c[id].desc = ndesc
    GM_setValue('cookies', c)
}
 
 
function switch_cookie(cookie) {
    var url = 'https://www.nmbxd1.com/Member/User/Cookie/switchTo/id/' + cookie.id + '.html'
    $.ajax({
        type: 'get',
        url: url,
        success: function(r, status, xhr) {
            toast('切换成功! 当前饼干为 ' + cookie.name)
            GM_setValue('now-cookie', cookie)
        }
    })
}
 
 
function show_switch_panel() {
    $('#ae-switch-panel').remove() // 删除上次创建的 panel
    if (!init_check()) {
        return
    }
 
    $('body').append('<div id="ae-switch-panel" class="ae-box"></div>')
    var sp = $('#ae-switch-panel')
    sp.fadeIn(500)
 
    sp.on('mouseleave',
        ()=>$('#ae-switch-panel').fadeOut(500)
    )
    var cookies = GM_getValue('cookies', null)
    var nc = GM_getValue('now-cookie', null)
    var nc_id = nc?nc.id:null
    for (var id in cookies){
        var c = cookies[id]
        sp.append(
            '<a class="ae-cookie" title="' + c.desc + '">' + ((id===nc_id)?'● ':'○ ') + c.name + ' - ' + c.desc + '</a>'
        )
        sp.children().eq(-1).data('c', c)
        .on('click',
            function() {sp.fadeOut(500); switch_cookie($(this).data('c'))}
        )
    }
}
 
 
function threads_resolve(index, node) { // 对每个串的格式进行处理
    // 将图片盒移动到正文之后
    var box = $(this).children('.h-threads-img-box').remove()
    $(this).append(box)
}
 
 
function on_cookies_manager() {
    $('th.table-title').after('<th class="ae-table-desc">饼干备注</th>')
    $('tbody>tr>td:nth-child(3)').after('<td></td>')
    $('tbody>tr>td:nth-child(7) a:first-child').before('<a href="#" class="am-btn am-btn-default"><span class="am-icon-tag"></span> 修改备注 </a>')
    // 0       1   2     3         4         5         6
    // 多选框  ID  饼干  饼干备注  有效时间  领取时间  操作
 
    var cookies = {}
    $('tbody>tr').each(function(i, n) {
        var td = $(this).children()
        var id = td.eq(1).text()
        var desc = get_desc(id)
        cookies[id] = {
            id: id,
            name: td.eq(2).children().first().text(),
            desc: desc
        }
        td.eq(3).text(desc)
        td.eq(6).find('a:first-child').data('id', id)
            .on('click', function() {iset_desc($(this).data('id'))})
        td.eq(6).find('a:nth-child(2)').data('cookie', cookies[id]).attr('href', '#').off('click')
            .on('click', function() {switch_cookie($(this).data('cookie'))})
    })
    GM_setValue('cookies', cookies);
    console.log('♦ 饼干信息更新完毕 √')
 
    var nc = GM_getValue('now-cookie', null)
    var info = nc?('当前饼干为 ' + nc.name):('当前饼干信息不明,请手动切换一次饼干')
    $('table').after('<span>' + info + '</span>')
}
 
 
(function() {
    GM_addStyle(custom_style)
    // 插入 toast
    $('body').append('<div id="ae-toast" class="ae-box" style="text-align: center;"></div>')
 
    if (window.location.pathname === "/Member/User/Cookie/index.html") {
        // 饼干管理页面
        on_cookies_manager()
    } else {
        init_check()
 
        $('#h-tool').prepend(
            '<a id="ae-mem-page" href="/Member/User/Index/index.html" title="用户系统" class="h-tool-btn"><i class="uk-icon-home"></i></a>'
        )
        $('#h-tool').append(
            '<a id="ae-switcher-toggle" title="切换饼干" class="h-tool-btn"><i class="uk-icon-paper-plane"></i></a>'
        )
        $('#ae-switcher-toggle').on('click', ()=>show_switch_panel())
        // 处理串样式
        $('.h-threads-item-reply-main').each(threads_resolve)
    }
})();