您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds keyboard shortcuts for focusing: previous form field (ALT+1), next form field (ALT+2), previous link (ALT+3), and next link (ALT+4).
- // ==UserScript==
- // @name Link & Form Field Navigation Shortcuts
- // @namespace http://tampermonkey.net/
- // @version 1.0.1
- // @license AGPL v3
- // @description Adds keyboard shortcuts for focusing: previous form field (ALT+1), next form field (ALT+2), previous link (ALT+3), and next link (ALT+4).
- // @author jcunews
- // @match *://*/*
- // @grant none
- // ==/UserScript==
- function isElementFocusable(ele, css) {
- while (ele && (ele !== document)) {
- if (!ele.offsetWidth || !ele.offsetHeight || ((css = getComputedStyle(ele)) && (css.display === "none"))) return false;
- ele = ele.parentNode;
- }
- return true;
- }
- addEventListener("keypress", function(ev, eles, i) {
- if ((["1", "2"].indexOf(ev.key) >= 0) && !ev.location && ev.altKey && !ev.ctrlKey) {
- eles = Array.prototype.slice.call(document.querySelectorAll("input, select, textarea"));
- if (document.activeElement && (["INPUT", "SELECT", "TEXTAREA"].indexOf(document.activeElement.tagName) >= 0)) {
- eles.some(function(ele, i) {
- if (ele === document.activeElement) {
- ele = ev.key === "1" ? eles[i - 1] || eles[eles.length - 1] : eles[i + 1] || eles[0];
- while (ele) {
- if (isElementFocusable(ele)) {
- ele.focus();
- ele.scrollIntoView(false);
- return true;
- }
- i += ev.key === "1" ? -1 : 1;
- ele = eles[i];
- }
- }
- });
- } else if (ele = eles[ev.key === "1" ? eles.length - 1 : 0]) {
- ele.scrollIntoView();
- ele.focus();
- }
- } else if ((["3", "4"].indexOf(ev.key) >= 0) && !ev.location && ev.altKey && !ev.ctrlKey) {
- eles = Array.prototype.slice.call(document.querySelectorAll("a"));
- if (document.activeElement && (document.activeElement.tagName === "A")) {
- eles.some(function(ele, i) {
- if (ele === document.activeElement) {
- ele = ev.key === "3" ? eles[i - 1] || eles[eles.length - 1] : eles[i + 1] || eles[0];
- while (ele) {
- if (ele.href && isElementFocusable(ele)) {
- ele.focus();
- ele.scrollIntoView(false);
- return true;
- }
- i += ev.key === "1" ? -1 : 1;
- ele = eles[i];
- }
- }
- });
- } else if (ele = eles[ev.key === "3" ? eles.length - 1 : 0]) {
- ele.scrollIntoView();
- ele.focus();
- }
- }
- });