您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
可访问性优化
当前为
// ==UserScript== // @name accessibility_盲网快捷键 // @namespace https://www.zhihu.com/people/yin-xiao-bo-11 // @version 0.1.6.1 // @description 可访问性优化 // @author Veg // @include http://apk.qt06.com/* // @include http://*.amhl.net/* // @include http://*tingyouwang.com/* // @include http://bbs.amtkjy.com/* // @grant none // ==/UserScript== (function() { `use strict`; const host = window.location.host; //包含页面所有元素的数组 let allElement = []; //存储焦点元素的数组下标 let focusElementIndex; function shortcutKey(k) { if (!k.altKey) { return false; } else { //获取页面所有元素,转成数组 let all = document.all; if (all.length !== allElement.length) { allElement = Array.prototype.slice.call(all); } //获取焦点元素的数组下标 focusElementIndex = allElement.indexOf(document.activeElement); if (host === 'bbs.amhl.net' || host === 'www.amhl.net' || host === 'apk.qt06.com' || host === 'tingyouwang.com' || host === 'www.tingyouwang.com' || host === 'bbs.amtkjy.com') { accesskey(k); } } } document.addEventListener('keydown', function (k) { shortcutKey(k); }, null); function previousTarget(target, subscriptArray) { for (let i = 0, l = target.length || subscriptArray.length; i < l; i++) { if (focusElementIndex > subscriptArray[l - 1] || focusElementIndex <= subscriptArray[0]) { target[l - 1].focus(); break; } else if (focusElementIndex <= subscriptArray[i]) { let xv = target.indexOf(target[i]); target[xv - 1].focus(); break; } } return false; } function nextTarget(target, subscriptArray) { for (let i = 0, l = target.length || subscriptArray.length; i < l; i++) { if (focusElementIndex < subscriptArray[i]) { let xv = target.indexOf(target[i]); target[xv].focus(); break; } else if (focusElementIndex < subscriptArray[0] || focusElementIndex >= subscriptArray[l - 1]) { target[0].focus(); break; } } return false; } function accesskey(k) { let Xscript = []; var xAcc = handleKey('x', 'accesskey-x', Xscript); let Zscript = []; var zAcc = handleKey('z', 'accesskey-z', Zscript); if (k.shiftKey && k.altKey && k.keyCode == 88) { previousTarget(xAcc, Xscript); } if (k.shiftKey && k.altKey && k.keyCode == 90) { previousTarget(zAcc, Zscript); } if (k.shiftKey) return false; if (k.altKey && k.keyCode == 88) { nextTarget(xAcc, Xscript) } if (k.altKey && k.keyCode == 90) { nextTarget(zAcc, Zscript) } } var handleKey = function (a, b, c) { var d = allElement.filter(function (t) { if (t.hasAttribute && t.hasAttribute('accesskey') && t.getAttribute('accesskey') == a || t.classList.contains(b)) { if (t.offsetParent !== null) { if (!t.classList.contains(b)) { t.classList.add(b); t.removeAttribute('accesskey', '*'); } c.push(allElement.indexOf(t)); return t; } } }); return d; } })();