您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Sets form's target to `_blank` when submitted while Control key is being pressed. Allow submit with middle mouse button.
// ==UserScript== // @name Submit to Tab with Ctrl + Click / Ctrl + Enter / Middle click // @description Sets form's target to `_blank` when submitted while Control key is being pressed. Allow submit with middle mouse button. // @namespace http://eldar.cz/myf/ // @license CC0 // @version 2.2.0 // @grant none // @include * // ==/UserScript== // https://greasyfork.org/en/scripts/9954/versions/new const controlKey = "Control"; const middleMouseButton = 4; let isControlPressed = false; let formElement = null; let pressedButton = null; let originalTarget = ''; window.addEventListener( 'submit', onSubmit, true ); window.addEventListener( 'keydown', onKeydown, true ); window.addEventListener( 'keyup', onKeyup, true ); window.addEventListener( 'mousedown', onMousedown, true ); window.addEventListener( 'mouseup', onMouseup, true ); window.addEventListener( 'blur', onBlur, false ); function onSubmit ( event ) { if ( isControlPressed === true && formElement === null ) { formElement = event.target; originalTarget = formElement.target; formElement.target = '_blank'; } } function onKeydown ( event ) { if ( event.key === controlKey ) { isControlPressed = true; } } function onKeyup ( event ) { if ( event.key === controlKey ) { isControlPressed = false; if ( formElement !== null ) { formElement.target = originalTarget; formElement = null; originalTarget = ''; } } } function onMousedown ( event ) { if ( event.buttons === middleMouseButton ) { if ( event.target?.type === 'submit' ) { pressedButton = event.target; } } } function onMouseup ( event ) { if ( pressedButton === event.target ) { let _origTarget = pressedButton.form.target; pressedButton.form.target = '_blank'; pressedButton.form.dispatchEvent( new SubmitEvent("submit", { submitter: pressedButton }) ); pressedButton.form.target = _origTarget; } pressedButton = null; } function onBlur ( event ) { onKeyup( { key: controlKey } ); }