您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Focus the first visible input text field when you press Esc key, or restore the previously focused element on second press
当前为
// ==UserScript== // @name Focus input text field on Esc // @description Focus the first visible input text field when you press Esc key, or restore the previously focused element on second press // @version 1.0.3 // @author wOxxOm // @namespace wOxxOm.scripts // @license MIT License // @run-at document-start // ==/UserScript== var TEXT_FIELD = ' text number search url '; var previousElement; var first; document.addEventListener('keydown', function(e) { if (e.keyCode != 27 || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return; // find text inputs inside visible DOM containers var inputs = document.getElementsByTagName('input'); for (var i=0, input, il=inputs.length; i<il && (input=inputs[i]); i++) if (TEXT_FIELD.indexOf(' '+input.type+' ') >= 0) { var n=input, style; while (n && n.style && (style=getComputedStyle(n)) && style.display!='none' && style.visibility!='hidden') n = n.parentNode; if (!n || !n.style) { if (!first // set the first OR if it's empty, try to select an identically named input field with some text (happens on some sites) || (input.value && input.name == first.name && (!input.form && !first.form || input.form.action == first.form.action))) { first = input; if (first.value) break; } } } if (first) { if (first != document.activeElement) { // switch to the found input field previousElement = document.activeElement; onkeyup(function(){ first.focus(); first.select(); }); } else if (previousElement) { // restore focus to the element from which we jumped to an input field previously onkeyup(function(){ document.activeElement.blur(); // in case document.body (page "background") was previously selected previousElement.focus(); }); } } // focusing should be done at key-up to prevent the Esc-keydown being also chain-handled by the just focused element function onkeyup(cb) { document.addEventListener('keyup', function keyup(e) { if (e.keyCode == 27) { document.removeEventListener('keyup', keyup); cb(e); } }); } });