Greasy Fork

Greasy Fork is available in English.

accessibility_百度贴吧快捷键

可访问性优化

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         accessibility_百度贴吧快捷键
// @namespace    https://www.zhihu.com/people/yin-xiao-bo-11
// @version      0.1.1
// @description  可访问性优化
// @author       Veg
// @include    *://tieba.baidu.com/*
// @grant        none
// ==/UserScript==

(function () {
    setTimeout(function () {
        proc(document); amo(proc);
    }, 10);
    function proc(d) {
        var url = window.location.href;
        var tb = url.substring(22, 24);
        if (tb == '/p') {
            //删除举报
            var ccq = d.querySelectorAll('ul.p_mtail'); for (var i = 0, l = ccq.length; i < l; i++) { var qn = ccq[i].parentNode; var sc = qn.querySelector('ul.p_mtail'); qn.removeChild(sc); }
            //删除用户名前面那个没名字的链接
            var ccq = d.querySelectorAll('div.j_louzhubiaoshi'); for (var i = 0, l = ccq.length; i < l; i++) { var qn = ccq[i].parentNode; var sc = qn.querySelector('div.j_louzhubiaoshi'); qn.removeChild(sc); }
            //删除徽章
            var ccx = d.querySelectorAll('li.l_badge'); for (var i = 0, l = ccx.length; i < l; i++) { var qn = ccx[i].parentNode; var sc = qn.querySelector('li.l_badge'); qn.removeChild(sc); }
            //删除用户成就的图标
            var ccq = d.querySelectorAll('li.d_icons'); for (var i = 0, l = ccq.length; i < l; i++) { var qn = ccq[i].parentNode; var sc = qn.querySelector('li.d_icons'); qn.removeChild(sc); }
            //删除用户名下面那个没名字的链接
            var ccq = d.querySelectorAll('li.d_nameplate'); for (var i = 0, l = ccq.length; i < l; i++) { var qn = ccq[i].parentNode; var sc = qn.querySelector('li.d_nameplate'); qn.removeChild(sc); }
            //删除用户图标
            var ccq = d.querySelectorAll('li.icon'); for (var i = 0, l = ccq.length; i < l; i++) { var qn = ccq[i].parentNode; var sc = qn.querySelector('li.icon'); qn.removeChild(sc); }

            //删除...
            var ccq = d.querySelectorAll('a.save_face_card'); for (var i = 0, l = ccq.length; i < l; i++) { var qn = ccq[i].parentNode; var sc = qn.querySelector('a.save_face_card'); qn.removeChild(sc); }

            //删除贴吧超级会员
            var ccq = d.querySelectorAll('a.icon_tbworld'); for (var i = 0, l = ccq.length; i < l; i++) { var qn = ccq[i].parentNode; var sc = qn.querySelector('a.icon_tbworld'); qn.removeChild(sc); }
            //删除楼中楼里的用户头像
            var ccq = d.querySelectorAll('a.lzl_p_p'); for (var i = 0, l = ccq.length; i < l; i++) { var qn = ccq[i].parentNode; var sc = qn.querySelector('a.lzl_p_p'); qn.removeChild(sc); }
            //删除帖子楼层页面的广告
            var ccq = d.querySelectorAll('span.label_text'); for (var i = 0, l = ccq.length; i < l; i++) { var qns = ccq[i].parentNode.parentNode.parentNode; var qn = qns.parentNode; var sc = qn.querySelector('span.label_text').parentNode.parentNode.parentNode; qn.removeChild(sc); }
            //删除帖子楼层页面的推荐应用
            var ccq = d.querySelectorAll('div[id="encourage_entry"]'); for (var i = 0, l = ccq.length; i < l; i++) { var qn = ccq[i].parentNode; var sc = qn.querySelector('div[id="encourage_entry"]'); qn.removeChild(sc); }
            //删除帖子楼层页面的下载应用
            var ccq = d.querySelectorAll('div.app_download_box'); for (var i = 0, l = ccq.length; i < l; i++) { var qn = ccq[i].parentNode; var sc = qn.querySelector('div.app_download_box'); qn.removeChild(sc); }
            //删除帖子楼层页面的意见反馈
            var ccq = d.querySelectorAll('ul.tieba_notice_theme2'); for (var i = 0, l = ccq.length; i < l; i++) { var qn = ccq[i].parentNode; var sc = qn.querySelector('ul.tieba_notice_theme2'); qn.removeChild(sc); }
            //删除帖子楼层页面的发帖提示
            var ccq = d.querySelectorAll('div.poster_head'); for (var i = 0, l = ccq.length; i < l; i++) { var qn = ccq[i].parentNode; var sc = qn.querySelector('div.poster_head'); qn.removeChild(sc); }
            //
            var ccq = d.querySelectorAll('a[title]');
            for (var i = 0, l = ccq.length; i < l; i++) {
                ccq[i].removeAttribute('title', '*');
            }
        }
        //发表、收起回复
        var fb = d.querySelectorAll('span.lzl_panel_submit,span.lzl_link_fold');
        for (var i = 0, l = fb.length; i < l; i++) {
            fb[i].setAttribute('tabindex', '0');
            fb[i].setAttribute('role', 'button');
            fb[i].classList.add('clickButton');
            fb[i].addEventListener("keydown", function (k) {
                if (k.keyCode == 13 || k.keyCode == 32) { this.click(); }
            }, null);
        }
        //翻页
        var fyul = document.querySelectorAll('ul.l_posts_num,[id="frs_list_pager"]'); {
            for (var g = 0; g < fyul.length; g++) {
                var fy = fyul[g].querySelectorAll('a[href]');
                for (var i = 0; i < fy.length; i++) {
                    var name = fy[i].innerText;
                    if (name == '上一页' || name == '<上一页') {
                        fy[i].classList.add('focusUp');
                        fy[i].setAttribute('role', 'button');
                    }
                    if (name == '下一页' || name == '下一页>') {
                        fy[i].classList.add('focusDown');
                        fy[i].setAttribute('role', 'button');
                    }
                }
            }
        }


        //快捷键
        var timeline = document.querySelectorAll('div.j_l_post,div.t_con');
        for (var i = 0, l = timeline.length; i < l; i++) {
            timeline[i].setAttribute('focuss', i);
            var tabindex = timeline[i].getAttribute('tabindex');
            if (tabindex == null) {
                timeline[i].setAttribute('tabindex', '-1');
                timeline[i].addEventListener("keydown", feedShortcutKey, null);
            }
        }

        //贴吧首页
        if (tb == '/f') {
            //删除广告
            var ccq = d.querySelectorAll('span.label_text'); for (var i = 0, l = ccq.length; i < l; i++) { var qns = ccq[i].parentNode.parentNode.parentNode.parentNode; var qn = qns.parentNode; var sc = qn.querySelector('span.label_text').parentNode.parentNode.parentNode.parentNode; qn.removeChild(sc); }
            var ccq = d.querySelectorAll('.j_icon_slot');
            for (var i = 0, l = ccq.length; i < l; i++) {
                var qn = ccq[i].parentNode; var sc = qn.querySelector('.j_icon_slot');
                qn.removeChild(sc);
            }
            var ccq = d.querySelectorAll('a.icon_tbworld');
            for (var i = 0, l = ccq.length; i < l; i++) {
                var qn = ccq[i].parentNode; var sc = qn.querySelector('a.icon_tbworld');
                qn.removeChild(sc);
            }

            var h = d.querySelectorAll('div.t_con');
            for (var i = 0, l = h.length; i < l; i++) {
                var a = h[i].querySelectorAll('a[title]');
                for (var j = 0; j < a.length; j++) {
                    var qn = a[j].parentNode;
                    var hTwo = document.createElement("h2");
                    if (qn.tagName !== 'H2') {
                        if (a[j].classList.contains('j_thread_hidden') || a[j].classList.contains('frs-author-name') || a[j].classList.contains('j_icon_slot'))
                            continue;
                        qn.insertBefore(hTwo, a[j]);
                        hTwo.appendChild(a[j]);
                    }
                }
            }
            //删除 title
            var ccq = d.querySelectorAll('a[title]');
            for (var i = 0, l = ccq.length; i < l; i++) {
                if (ccq[i].classList.contains('j_thread_hidden'))
                    continue;
                ccq[i].removeAttribute('title', '*');
            }
        }

    }
    function amo(processFunction) {
        var mcallback = function (records) {
            records.forEach(function (record) {
                if (record.type == 'childList' && record.addedNodes.length > 0) {
                    var newNodes = record.addedNodes;
                    for (var i = 0, len = newNodes.length; i < len; i++) {
                        if (newNodes[i].nodeType == 1) {
                            processFunction(newNodes[i]);
                        }
                    }
                }
            });
        };
        var mo = new MutationObserver(mcallback);
        mo.observe(document.body, { 'childList': true, 'subtree': true });
    }
})();

function feedShortcutKey(k) {
    k.stopPropagation();
    var feed = document.querySelectorAll('div[focuss]');
    var focussValue = this.getAttribute('focuss'); var number = parseInt(focussValue);
    if (k.altKey && k.shiftKey && k.keyCode == 88) {
        if (focussValue !== null) {
            if (this.getAttribute('focuss') == '0')
                return false; feed[number - 1].focus();
        }
    }

    if (k.altKey && k.keyCode == 88) { if (focussValue !== null) { feed[number + 1].focus(); } }
    if (k.altKey && k.shiftKey && k.keyCode == 88) { if (focussValue !== null) { if (this.getAttribute('focuss') == '0') return false; feed[number - 1].focus(); } }
    if (k.altKey && k.keyCode == 50) {
        var fb = this.querySelectorAll('a.lzl_link_unfold,a.j_lzl_p');
        for (var i = 0; i < fb.length; i++) { fb[i].focus(); }
    }
    kjj(k);
}

document.body.addEventListener("keydown", function (k) {
    var content = document.querySelectorAll('div[focuss]');
    for (var i = 0, l = content.length; i < l; i++) {
        if (k.altKey && k.keyCode == 88) { content[0].focus(); }
        if (k.altKey && k.shiftKey && k.keyCode == 88) { content[l - 1].focus(); }
    }
    kjj(k);
}, null);
function kjj(k) {
    if (k.altKey && k.keyCode == 49) { document.querySelector('.edui-body-container').focus(); }
    if (k.altKey && k.keyCode == 51) { document.querySelector('a.focusUp').focus(); }
    if (k.altKey && k.keyCode == 52) { document.querySelector('a.focusDown').focus(); }
}


var audio = new Audio("http://veg.ink/music/sound.mp3");
audio.volume = 0.15;
audio.play();